- PR -

ASP.NETでShared変数の値が一瞬変わってしまう

投稿者投稿内容
EJ
会議室デビュー日: 2007/02/21
投稿数: 4
投稿日時: 2007-02-21 21:43
WindowsXP、ASP.NET(VB)を使ってます。
「App_Code」下にクラスを作成し、Shared変数を宣言しています。
WebページのVBでShared変数の値に1を設定して別のページへ遷移し、移ったページでShared変数を取得しています。
が、変数の値がたまに0になっているようです。

変数を取得する際にメッセージボックスで値を確認したところ、0になっていることは確認できました。
しかし、メッセージボックスを表示した直後に再度メッセージボックスで変数値を確認したところ、1回目のメッセージボックスの値は「0」で2回目のメッセージボックスの値が「1」に変わっていました。

このことから一瞬だけ値が勝手に0になっているようなのですが、この現象について何かご存知の方がいらっしゃいましたらご教授いただけますでしょうか。

宜しくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-02-21 22:04
Shared 変数 はアプリケーションで共有されるので、
EJさん以外の人が使っていれば誰かが変更したということはあり得ます。
_________________
かるあ のメモスニペット
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-22 07:01
普通は、設定する所を調べます。
VB6以前のユーザーは、moduleなどの広域変数を使いたがりますが、特にASP.NETでは、読み出し専用でしか用いないことが吉です。
_________________
EJ
会議室デビュー日: 2007/02/21
投稿数: 4
投稿日時: 2007-02-22 13:42
返信ありがとうございます。

現在ローカルで使用していますので、
誰かが変更したということはないと考えられます。
現象については未だ発生している状態ですので、
Shared変数の代わりとしてセッション変数の使用を考えております。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-22 21:17
 ローカルって、どこのローカルですか?

 米国人と日本人が話をしているとき、日本人が「ローカルな話」といえば、日本全体を指しますよ。東京都民と大阪府民が話をしているとき、大阪府民が「ローカルな話」といえば、大阪しか指しませんよ。

 もっとも、私の「広域変数」にも同じことが言えるのですが、それに対しては「module のような」と例を付けて、対象を絞っています。

 でもって、プログラム言語一般で「ローカル変数」といえば、「関数(メソッド)内」を指しますが、反対にメソッド内に Shared 宣言は出来ないので、意味がわかりません。


 と、ここまで書いて、「ローカル コンピュータ」かな、と思い直す。しかし、「App_Code下」ってのがなんのことか、やっぱりわからない。
_________________
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-02-23 00:45
ASP.NET 2.0では動的にコンパイルされるクラスはApp_Codeという名前のフォルダに
配置する必要がありますね。

それよりも、Webアプリなのに「メッセージボックスで値を確認」という部分が
不思議。。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-23 08:05
引用:

どっとねっとふぁんさんの書き込み (2007-02-23 00:45) より:

それよりも、Webアプリなのに「メッセージボックスで値を確認」という部分が
不思議。。。


Web サーバもクライアントも同一端末だから成せる 「技」 を使っている予感ですね。

"ローカル" とはローカル端末のことだと思いますが、もしそうであれば、
値が変わってしまうのは、ただの不具合のような気がしないまでもないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-02-23 10:56
ASP.NET で Shread 変数は使ったことが無いのですが、
アプリケーションの再起動が走って値がリセットされているとか言うことは無いでしょうか。
そうなるとおそらく InProc を使っていると思われるんだけれど。。。

_________________
かるあ のメモスニペット

スキルアップ/キャリアアップ(JOB@IT)