- - PR -
ASP.NETでShared変数の値が一瞬変わってしまう
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-21 21:43
WindowsXP、ASP.NET(VB)を使ってます。
「App_Code」下にクラスを作成し、Shared変数を宣言しています。 WebページのVBでShared変数の値に1を設定して別のページへ遷移し、移ったページでShared変数を取得しています。 が、変数の値がたまに0になっているようです。 変数を取得する際にメッセージボックスで値を確認したところ、0になっていることは確認できました。 しかし、メッセージボックスを表示した直後に再度メッセージボックスで変数値を確認したところ、1回目のメッセージボックスの値は「0」で2回目のメッセージボックスの値が「1」に変わっていました。 このことから一瞬だけ値が勝手に0になっているようなのですが、この現象について何かご存知の方がいらっしゃいましたらご教授いただけますでしょうか。 宜しくお願いします。 | ||||
|
投稿日時: 2007-02-21 22:04
Shared 変数 はアプリケーションで共有されるので、
EJさん以外の人が使っていれば誰かが変更したということはあり得ます。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-02-22 07:01
普通は、設定する所を調べます。
VB6以前のユーザーは、moduleなどの広域変数を使いたがりますが、特にASP.NETでは、読み出し専用でしか用いないことが吉です。 _________________ | ||||
|
投稿日時: 2007-02-22 13:42
返信ありがとうございます。
現在ローカルで使用していますので、 誰かが変更したということはないと考えられます。 現象については未だ発生している状態ですので、 Shared変数の代わりとしてセッション変数の使用を考えております。 | ||||
|
投稿日時: 2007-02-22 21:17
ローカルって、どこのローカルですか?
米国人と日本人が話をしているとき、日本人が「ローカルな話」といえば、日本全体を指しますよ。東京都民と大阪府民が話をしているとき、大阪府民が「ローカルな話」といえば、大阪しか指しませんよ。 もっとも、私の「広域変数」にも同じことが言えるのですが、それに対しては「module のような」と例を付けて、対象を絞っています。 でもって、プログラム言語一般で「ローカル変数」といえば、「関数(メソッド)内」を指しますが、反対にメソッド内に Shared 宣言は出来ないので、意味がわかりません。 と、ここまで書いて、「ローカル コンピュータ」かな、と思い直す。しかし、「App_Code下」ってのがなんのことか、やっぱりわからない。 _________________ | ||||
|
投稿日時: 2007-02-23 00:45
ASP.NET 2.0では動的にコンパイルされるクラスはApp_Codeという名前のフォルダに
配置する必要がありますね。 それよりも、Webアプリなのに「メッセージボックスで値を確認」という部分が 不思議。。。 | ||||
|
投稿日時: 2007-02-23 08:05
Web サーバもクライアントも同一端末だから成せる 「技」 を使っている予感ですね。 "ローカル" とはローカル端末のことだと思いますが、もしそうであれば、 値が変わってしまうのは、ただの不具合のような気がしないまでもないです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-23 10:56
ASP.NET で Shread 変数は使ったことが無いのですが、
アプリケーションの再起動が走って値がリセットされているとか言うことは無いでしょうか。 そうなるとおそらく InProc を使っていると思われるんだけれど。。。 _________________ かるあ のメモ と スニペット |