![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
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内で速度を遅くした音源をCD...
-
スマホでtxtファイルを編集する...
-
2枚、マイクロSDカードを入...
-
エクセルで「特定の文字を含む...
-
e-taxで送信ファイルの拡張子が...
-
flash (.swf) を編集したい
-
SDカードについて。 主にSD...
-
ガラケーからPCへの写真の取り込み
-
iPhoneの内蔵の記憶媒体は、HDD...
-
情けない話ですが成田エクスプ...
-
Accessのフォームから特定のフ...
-
動画のURLの見方
-
このゲーム(フラッシュ)のダ...
-
抗がん剤投与後のフラッシュ
-
CD・DVDレーベル面の取り扱い
-
エアコンの冷媒 R410Aの重...
-
stdio.hの中身
-
サポートされたファイル形式お...
-
exeファイルをWeb上で見せる方法
-
PDFファイルの倍率を変えて保存...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
A4の紙に印刷されている文字を...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
ガラケーからPCへの写真の取り込み
-
PC内で速度を遅くした音源をCD...
-
VBS フォルダ内にあるすべての...
-
エアコンの冷媒 R410Aの重...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
stdio.hの中身
-
ビデオファイルのプロパティの...
-
ファイル数と合計サイズの取得方法
-
2枚、マイクロSDカードを入...
-
拡張子「.IDJ」を、windo...
-
プロ野球の結果を教えてください
-
複数のブックを新しいブックのS...
-
VBA:カウンターの i の値が開放...
-
SDカードを挿してるのに挿入し...
-
リストビューの選択状態を取得...
おすすめ情報