- - PR -
Application_OnEnd(Global.asax)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-28 18:10
こんにちは、しましまといいます。
現在、ASP.NETのGlobal.asax上に以下のようなコードを 記述し、アプリケーションの終了時にあるアプリケーション 状態の情報をファイルに書き込もうとしています。 Sub Application_OnEnd() Dim sw As New StreamWriter(Server.MapPath("SAMPLE.txt"),False) sw.WriteLine(Application("xxxx")) sw.Close() End Sub が、IISを終了しても、サーバ自体を終了しても何も動作しません。 いったい、何が原因でしょうか? お分かりになる方、ぜひお知恵を拝借させてください。 | ||||
|
投稿日時: 2003-11-28 20:38
ヲヲヌキです。
> Dim sw As New StreamWriter(Server.MapPath("SAMPLE.txt"),False) IIS 5.0のApplication_OnEndイベントのドキュメントには、「Server.MapPathメソッドは利用できない」と記述してあります。 とりあえずファイル名をServer.MapPathメソッドで取得するのではなく、固定の文字列で試してみてはいかがでしょうか。 | ||||
|
投稿日時: 2003-11-28 20:45
残念ながら、絶対パスで記述してもダメでした。
ちなみに、global.asax内でServerオブジェクトが使用できないのは ASPの場合だったと思うのですが、違うのでしょうか?ASP.NETでは HttpApplication.Serverプロパティとして公開されているので、 問題なく使えると考えていたのですが... | ||||
|
投稿日時: 2003-11-28 20:53
しましまさん、こんばんは。
取り敢えず、このコードをボタンクリック等の別のイベントハンドラに記述して、デバッグ実行してみては如何でしょうか。 | ||||
|
投稿日時: 2003-11-28 21:26
ありがとうございます。
通常の「.aspx」ファイルでの動作ではまったく問題ありません。 しかし、Application_Endイベントはいつ発生しているのでしょう か?とりあえずイベントログへの吐き出しのコードを記述してみた のですが、Application_OnStartは記録されるのに、OnEndでは 記録されません。。。 | ||||
|
投稿日時: 2003-11-28 21:29
アプリケーションが終了されていない=オンメモリのまま、ということですかね。
スタティックな変数がない、単純なアプリケーションで、すべての接続がなくなり、IISが保持するクッキーやセッションの情報がなくなる時間待ってみたら、どうなりますかね? ↓↓↓↓↓じゃぁ、たぶん、ガベージコレクトされたんでしょう。↓↓↓↓↓ [ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-28 21:56 ] | ||||
|
投稿日時: 2003-11-28 21:52
おぉ!行きました!!(なぜか...)
しかし、IISからサイトを停止したタイミングでアプリケーションも 終了されると思っていたのですが、タイムラグがあるものなのでしょ うか...特にわたしの場合、アプリケーション内でクッキーもShared 変数も使用していなかったのですが。 いずれにせよ、解決です。ありがとうございました。 |
1