- - PR -
WebServiceでstatic変数が初期化される
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-10 21:28
Webサービスの実体のインスタンスはそうでしょうけど、Static なメンバはずっと生存しています(参照がなくなるまでは)。 # もちろん、ASP.NET の再起動等が発生すれば別です。 | ||||
|
投稿日時: 2003-11-11 09:01
Globalって、global.asaxのGlobalのこと?! ここのApplication_Startに System.Diagnostics.Debug.AutoFlush = true; System.Diagnostics.Debug.IndentLevel = 0; System.Diagnostics.Debug.WriteLine("Global.Application_Start"); っていれておけば、いつリセットされるかわかりますよ、たぶん。 #デバッガ上で動かしてないとダメだけど。 | ||||
|
投稿日時: 2003-11-11 12:14
返信ありがとうございます。
>書き込み先のファイルは何ですか? >Web.config あるいは、bin フォルダ内にあるファイルではないですか? >もしそうなら、そのWebアプリケーションのアプリケーションドメインがリロードされるためだと思います。 binフォルダの中にログファイルを作成しています。 ほかのところに作って試してみます。 > Globalって、global.asaxのGlobalのこと?! そうです。説明不足ですみません。 > ここのApplication_Startに > >System.Diagnostics.Debug.AutoFlush = true; >System.Diagnostics.Debug.IndentLevel = 0; >System.Diagnostics.Debug.WriteLine("Global.Application_Start"); > >っていれておけば、いつリセットされるかわかりますよ、たぶん。 >#デバッガ上で動かしてないとダメだけど。 試してみます。 | ||||
|
投稿日時: 2003-11-11 13:33
思いっきり考え違いをしていました(^^; おっしゃるとおり、staticは生存してますね。 で、bin以外のフォルダ(試しにApplicationDataフォルダ)でやってみたところ、リセットされずにWrite、Readできました。 makeさん、ご参考までに。 | ||||
|
投稿日時: 2003-11-16 16:56
makeさんと同様の問題を抱えており、こちらのスレッドを参考に
調査を進めております。 なちゃさんのおっしゃるとおり、bin以外のフォルダであればリセット されませんでした。 ただ、なちゃさんのおっしゃる「アプリケーションドメインがリロード」 という部分がよくわかっておりません。 私の場合、どうしてもbinフォルダ内のファイルに書き込みを行いたいのですが それは不可能なのでしょうか だれかご存知の方がおりましたら教えて頂けないでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2003-11-17 01:20
表現がちょっと分かりにくかったですが、要はそのWebアプリケーションのASP.NET環境が再起動されるというか、初期化されるというか、まあそんな感じだと理解すれば良いと思います。 簡単に言うと、bin フォルダは ASP.NET において特殊な意味を持つフォルダであり、ここのファイルに更新などが発生すると、ASP.NET の環境が再起動されるようになっています(表現が微妙ですが)。 これは、Webアプリケーションが使用しているDLLなどが更新された場合に対応するためです。.NET環境では、既にロードしたアセンブリを再ロードして動作を更新することが出来ないので、環境ごと再起動(再作成?)されます。 ですので、静的なデータも含めてリセットされます。 回避方法はもしかしたらあるのかもしれませんが(私は知りません)、そういうものだと納得して別のフォルダを使用することを考慮した方が良いと思います。 |