1は非常に簡単です。要は、その「サーバー側でCSVファイルを作成するフォルダ」を、IISの公開フォルダにしてしまえばいいだけです。サイトのホームディレクトリ(c:\inetpub\wwwroot等)の下に作成してもいいですし、適当な仮想ディレクトリにリンクしてもいいでしょう。
2は、ASP.NETに限らず、基本的にWebサービスでは不可能です。クライアントがページを閉じた事をサーバ側で知る確実な方法はありません。
ページにJavaScriptを埋め込むことで、ブラウザをクローズするイベントをサーバに通知する仕掛を作ることは可能ですが、例えばクライアント端末の電源が直接切られたというような場合には当然検知できません。
ブラウザクローズではなくサーバセッションの消滅をトリガにするなら、Session_OnEndイベントを使うという方法はありますが、セッションの消滅とブラウザのクローズに直接の関係はありませんので、使えるかどうかは目的次第です。
http://msdn.microsoft.com/ja-jp/library/ms178583%28v=vs.100%29.aspx
こんにちは。同系列の質問で,お会いするのは3回目ですね。(前:http://q.hatena.ne.jp/1386131832)
>1.クライエント側のwebに作成したCSVファイルを表示してダウンロードをできるようにしたい。
forループを使って,Webページ上に
<a href="(CSVファイルへアクセスするためのURL)">ここからダウンロード</a>
のようなリンクを動的に生成します。リンクではなく,button要素にするケースもあります。
>2.クライエントがwebを閉じたら、サーバー側の作成したCSVファイルを削除する。
またWebの仕組みの話になりますが,クライアントがWebを閉じたかどうかを「確実に」検出する事は,インターネットのブラウザでは不可能です。
根拠は下記のリンクをご参照ください。
Webアプリケーションにおける排他制御の問題(×ボタンへの対処) - きのこる先生 -チラシの裏
http://d.hatena.ne.jp/halo_w2/20061114/p2
ですので,必ず一定時間はサーバー内にファイルが残ることになります。
一般的には,定期的に古いファイルを削除するようなバッチを走らせて解決する事になります。
このようにファイルがサーバ内に一定時間残ってしまうのは避けられないのですが,
もし質問文中の
>サーバー側で、複数のCSVファイルを特定のフォルダに作成します
この前提をなくせば,よりよい方法が実現可能です。
クライアントが各リンク(または各ボタン)を押下したら,
そのタイミングで,各CSVがResponseとしてファイル出力されるようなURLにクライアントをジャンプさせ,
各URLで動的にファイルを生成してダウンロードさせる,という手です。
これなら画面遷移がありませんし,サーバ内にCSVファイルが残ってしまう事もありません。
以上です。
ちなみに3回とも,どの質問も,根本的な問題はASP.NETにほとんど関係が無く,
むしろWebの仕組みに関係がある,という内容の質問内容でした。
3回とも本質を突く回答をするように心がけてきたつもりですが,多少なりともお役には立てているのでしょうか・・・?
アプリ実現のため,ぜひ頑張って下さいね。
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=14449
でがんばってみます。みなさん、どうも長々とありがとうございました。<(__)>