お世話になります。
ASP.NET(VS2010)に関する質問です。
あるページクラスがArrayList型変数(Public)を持っています。
----------------------------------------------------------------------
1.ボタンクリックで、
(1)クライアントアドレスを含んだファイル名でファイルを開き、ある文字列を書き込む
(2)前述の変数に、1で使用したファイル名をAdd
2.別のボタンクリックで、
前述の変数値からファイル名を取得・ファイルをダウンロードして、表示等を行う
ダウンロード時は、ファイルに含まれるクライアントアドレスと、自身のアドレスを比較
して、合致する場合のみダウンロード
----------------------------------------------------------------------
と言う処理があります。
現在これを複数の端末から行うと、稀にユーザーから、
「明らかに自分の端末から処理した物と違うデータが表示される」
と指摘されます。
例えば、クライアントAは「AAA」「CCC」、クライアントBは「BBB」と表示されることを
期待していると、クライアントAに「AAA」「BBB」「CCC」、クライアントBに「BBB」と表
示される様です。
この様な事が起こる原因として考えられる理由には何があるでしょうか?
自分が気になっている点としては、
----------------------------------------------------------------------
1.ArrayList型変数の初期化が、宣言時にしか行われていない
2.そもそもクラス変数ではなく、Session変数を使用すべき?
3.ファイルの書き込み時にロックをしていない
----------------------------------------------------------------------
があるのですが…
以上、お詳しい方、情報頂けると幸いです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
あと、完全に一つのページに閉じてしまうというならビューステートを使用するという手もありますね。
(個人的にセッション変数を多用したくないのでそっちを使うことが多いです)
大変遅くなりましたが、さらなる情報ありがとうございます。
セッションにしろビューステートにしろ、今まで使ったこと無かったのですが、どうにも避けては通れないみたいですね…
前回もそうなのですが、この現象は一月に数回しか起きなくて、今の所もまだ起きていないのですが、起きることを前提に修正方法を吟味したいと思います。
No.1
- 回答日時:
2ですね。
クラス変数(インスタンス変数ではなく)の場合はスコープが
「アプリケーション」になります。
クラサバなら書く端末でアプリケーションを上げてるわけですが、
Webアプリの場合はサーバーにひとつあるだけですよね。
なので、すべての変数を全ユーザーが共有している形になっているはずです。
この場合ならセッション変数を使うほうが変更点は少なくなるんじゃないかと思います。
遅くなりましたが、ありがとうございます。
>なので、すべての変数を全ユーザーが共有している形になっているはずです。
そうなのですか…どこかでインスタンスは接続毎に作られるような記述を見た覚えがあったのですが…
で、クラス変数でも問題ないのかなと思ってました。
Session変数はページ間で移動する場合位しか使用することは無いのかなとも。
身内的には「ロック」を疑って、今週頭にそれで修正掛けて載せちゃったいました!?
まずいな、また起こるな・・・
ちょっと、その方向で再度検討してみます。
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(スマホアプリ・スマホゲーム) アプリをスマホにダウンロード、インストールする方法 3 2022/08/13 11:26
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ガラケーからPCへの写真の取り込み
-
e-taxで送信ファイルの拡張子が...
-
拡張子「.IDJ」を、windo...
-
ビデオファイルのプロパティの...
-
赤目になる人、ならない人
-
パソコン名、IPアドレスをH...
-
2枚、マイクロSDカードを入...
-
アイコンの作り方
-
Fortniteのクラッシュについて
-
リストビューで選択行の背景を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
画像をトリミングしてフォルダ...
-
A4の紙に印刷されている文字を...
-
アラーム音の変え方
-
garagebandのLR Mixの方法について
-
iphoneでネット画像を保存でき...
-
J PHONEからPHSへ写...
-
イラストレータ 10 .pngが...
-
Accessのフォームから特定のフ...
-
Flashファイルにリンクを付けたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
複数のブックを新しいブックのS...
-
A4の紙に印刷されている文字を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
ガラケーからPCへの写真の取り込み
-
拡張子「.IDJ」を、windo...
-
Fortniteのクラッシュについて
-
2枚、マイクロSDカードを入...
-
VBA:カウンターの i の値が開放...
-
stdio.hの中身
-
ファイル数と合計サイズの取得方法
-
TextBoxにフォーカスを与えると...
-
PC内で速度を遅くした音源をCD...
-
リストビューの選択状態を取得...
-
GIMP separate+プラグイン クラ...
おすすめ情報