asp.net2.0 VB proにおいて

サーバー側で、複数のCSVファイルを特定のフォルダに作成します。・・ここまではできると思います。
この後、
1.クライエント側のwebに作成したCSVファイルを表示してダウンロードをできるようにしたい。
2.クライエントがwebを閉じたら、サーバー側の作成したCSVファイルを削除する。

以上の1,2がasp.net2.0でできる方法について教えていただきたく存じます。
最新の4.5での方法でもOKです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/12/04 14:36:06
  • 終了:2013/12/04 16:22:28

回答(2件)

id:hissssa No.1

hissssa回答回数421ベストアンサー獲得回数1272013/12/04 15:03:10

ポイント100pt

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

id:language_and_engineering No.2

lang_and_engine回答回数170ベストアンサー獲得回数632013/12/04 15:15:42

ポイント100pt

こんにちは。同系列の質問で,お会いするのは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回とも本質を突く回答をするように心がけてきたつもりですが,多少なりともお役には立てているのでしょうか・・・?

アプリ実現のため,ぜひ頑張って下さいね。

id:kojiro_i619

http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=14449
でがんばってみます。みなさん、どうも長々とありがとうございました。<(__)>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません