サーバでファイルを書くとデータが混ざる?

このQ&Aのポイント
  • ASP.NET(VS2010)に関する質問です。あるページクラスがArrayList型変数を持っていて、ボタンクリックでファイルに文字列を書き込み、別のボタンクリックでダウンロードして表示する処理があります。複数の端末から行うと、稀にユーザーから明らかに自分の端末から処理した物と違うデータが表示されると指摘されます。原因として考えられる理由は、ArrayList型変数の初期化が宣言時にしか行われていない、クラス変数ではなくSession変数を使用すべきか、ファイルの書き込み時にロックをしていないことなどです。
  • 質問:サーバでファイルを書くとデータが混ざる? ASP.NET(VS2010)に関する質問です。あるページクラスがArrayList型変数を持っています。ボタンクリックでファイルに文字列を書き込み、別のボタンクリックでダウンロードして表示する処理があります。複数の端末から行うと、稀にユーザーから明らかに自分の端末から処理した物と違うデータが表示されると指摘されます。ArrayList型変数の初期化が宣言時にしか行われていない、クラス変数ではなくSession変数を使用すべきか、ファイルの書き込み時にロックをしていないことなどが原因の可能性です。
  • ASP.NET(VS2010)に関する質問です。あるページクラスがArrayList型変数を持っています。ボタンクリックでファイルに文字列を書き込み、別のボタンクリックでダウンロードして表示する処理があります。複数の端末から行うと、稀にユーザーから明らかに自分の端末から処理した物と違うデータが表示されると指摘されます。原因として考えられる理由は、ArrayList型変数の初期化が宣言時にしか行われていない、クラス変数ではなくSession変数を使用すべきか、ファイルの書き込み時にロックをしていないことなどです。
回答を見る
  • ベストアンサー

サーバでファイルを書くとデータが混ざる?

お世話になります。 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

あと、完全に一つのページに閉じてしまうというならビューステートを使用するという手もありますね。 (個人的にセッション変数を多用したくないのでそっちを使うことが多いです)

prd5678
質問者

お礼

大変遅くなりましたが、さらなる情報ありがとうございます。 セッションにしろビューステートにしろ、今まで使ったこと無かったのですが、どうにも避けては通れないみたいですね… 前回もそうなのですが、この現象は一月に数回しか起きなくて、今の所もまだ起きていないのですが、起きることを前提に修正方法を吟味したいと思います。

その他の回答 (1)

回答No.1

2ですね。 クラス変数(インスタンス変数ではなく)の場合はスコープが 「アプリケーション」になります。 クラサバなら書く端末でアプリケーションを上げてるわけですが、 Webアプリの場合はサーバーにひとつあるだけですよね。 なので、すべての変数を全ユーザーが共有している形になっているはずです。 この場合ならセッション変数を使うほうが変更点は少なくなるんじゃないかと思います。

prd5678
質問者

お礼

遅くなりましたが、ありがとうございます。 >なので、すべての変数を全ユーザーが共有している形になっているはずです。 そうなのですか…どこかでインスタンスは接続毎に作られるような記述を見た覚えがあったのですが… で、クラス変数でも問題ないのかなと思ってました。 Session変数はページ間で移動する場合位しか使用することは無いのかなとも。 身内的には「ロック」を疑って、今週頭にそれで修正掛けて載せちゃったいました!? まずいな、また起こるな・・・ ちょっと、その方向で再度検討してみます。 ありがとうございました!!

関連するQ&A

  • Webサーバからファイルをダウンロード

    Webサーバの既知のディレクトリ(http://aaa.co.jp/bbb/)に 保管されているPDFファイル(ccc.pdf)をクラインアントから 次のようにダウンロードさせるサイトが作りたいです。 (1)クライアントが、Webサイトのテキストボックスにファイル名(ccc.pdf)を   入力して、保存ボタンを押す。 (2)クライアントに、「名前を付けて保存」ダイアログを表示させる。   (デフォルトでファイル名は ccc.pdf となっている。) (3)クライアントが「保存する場所」を指定して、「保存」ボタンを押すと、   http://aaa.co.jp/bbb/ccc.pdf がダウンロードされ、指定の場所に   ファイルが保存される。 この(2)、(3)の処理をさせるのに、JavaScriptでどのように書けば 良いのでしょうか? (location.href でファイルをブラウザで表示させることはできますが、  表示させることなく、保存だけしたいです。) 素人のため、言葉の使い方がおかしいかもしれませんが、 宜しくお願い致します。

  • PHPでテキストファイルを読み込み変数に代入する

    PHP超初心者ですみません。 aaa:111 bbb:222 ccc:333 444444 という内容のテキストファイルをPHPで読み込み aaa(変数名)=111(中身) bbb(変数名)=222(中身) ccc(変数名)=333\n444444(中身改行あり) という風にできないのでしょうか? いろいろ探しましたがわからなかったので よろしくお願い致します。

    • ベストアンサー
    • PHP
  • C言語でのファイル検索&ファイル書き換えについて

    C言語である特定のフォルダを指定して、その階層内(サブフォルダも含む)にあるファイル、例えばsample_nameをファイル名に含むファイルを見つけ、そのファイル内の例えば下のような書き換えを行えるようなプログラムはどうつくればいいのでしょうか。 元ファイル ~sample_name1.txt~ aaa, 10 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 30 ccc, 12 bbb, 20 ddd, 15 上のように各ファイルにaaaやbbbが共通に含まれています。 対象ファイル:sample_name 対象文字列:aaa 変換後:100 変換後ファイル ~sample_name1.txt~ aaa, 100 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 100 ccc, 12 bbb, 20 ddd, 15

  • XMLの特定のデータを書き込むには?

    下記のXMLファイルを読み込んで、 タグYYYのキーでKEY2を検索し、 子要素AAAの値のData2を書き換えるという処理を 作ろうとしてるのですが、 なかなか解決策が見つかりません。 よろしくお願い致します。 例: abc.xml <XXX> <YYY KKK="KEY1"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> <YYY KKK="KEY2"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> <YYY KKK="KEY3"> <AAA>Data1</AAA> <BBB>Data2</BBB> <CCC>Data3</CCC> </YYY> </XXX>

  • ファイル(A)を読み込んで文字列を変数に代入、変数で別ファイル(B)を検索・・・

    お世話になっております。 まず、仕様から書かせて頂きたいと思います。 【ファイルA】 商品名 数量 ------------- AAA, 3 BBB, 5 CCC, 6 AAA,5 . . . 【ファイルB】 AAA,11111 BBB,12345 CCC,99999 . . . 【ファイルC】 商品コード 数量 ------------------ 11111 8 12345 5 99999 6 (1)ファイルAを読込み、アルファベット文字列を変数に代入 (2)変数でファイルBを検索 (ファイルAの最後まで検索) (3)検索してみつかったら 数字文字列(商品コードとします)に変換 (4)商品コードと、数量の合計をファイルCに出力 fgets、strcmpなどを使って試してみたのですが、 うまく行かず、教えていただけますでしょうか?

  • 3つのcssファイルを1つのcssファイルにする

    あるhtmlファイルがあり、3つのcssファイルたとえば、aaa.css,bbb.css,ccc.cssの3つのファイルがあります。 htmlには3つのボタンがあり、その一つのボタンを押すとaaa.cssのファイルを使用するとし、同じようにbbb.css,ccc.cssもボタンごとに異なる操作ができるとします。 それを1つのcssファイル、abc.cssファイルにまとめたいのですが、どのように作成すればいいのでしょうか? 何かでこのときはこの処理を行うみたいな指定がhtmlかcssファイルのどちらかで出来るのでしょうか? かなり困っております。 どなたか回答よろしくお願いいたします。

  • CD内のファイルのリストを作る。

    自分で作ったCD内のフォルダやファイルなどをリストにしてテキストやCSVに出力してくれるソフトを探してます。 例えば、aaaというフォルダにbbb、cccというファイルがあるとすると、 aaa └bbb └ccc というような感じです。 別にこのようなものでなくてもいいので(ファイル、フォルダ名が分かれば)良いソフトがあれば教えてください。 最近、このファイルはそのCDに焼いたかっていうのが分からなくなるくらいCDが増えてきてしまったので。 それではよろしくお願いします。

  • 行数ごとに検索をかけて並び替えをしたいのですが・・

    数千のファイル名が書かれたテキストファイルがあります。(Aとします。) /yyy/ccc.txt /aaa/aaa.txt /bbb/bbb.txt /sss/aaa.txt /ccc/bbb.txt /zzz/ccc.txt ・ ・ ・ ユニークファイル名だけ書かれたファイルがあります。(Bとします。) aaa.txt bbb.txt ccc.txt ・ ・ ・ Bの行数1行ずつAで検索をかけ、ファイル名を新しいファイル(Cとします)に書き出したいのです。 /aaa/aaa.txt /sss/aaa.txt /bbb/bbb.txt /ccc/bbb.txt /yyy/ccc.txt /zzz/ccc.txt ・ ・ ・ シェルを使ってやりたいのですが、どのようにすればいいのか見当もつきません。 どなたかお分かりのかたいましたら教えてください。よろしくおねがいします。

  • 圧縮ソフトで複数のファイルを複数のZIPファイルに一括で変換するフリー

    圧縮ソフトで複数のファイルを複数のZIPファイルに一括で変換するフリーソフトは無いですか? 例えば 複数のフォルダ「aaa」「bbb」「ccc」があったとして これを一括処理で[aaa.zip][bbb.zip][ccc.zip]を作ってくれるようなもの、もしくは方法を教えてください。

  • swfファイルが削除できない_2

    先日、以下の質問を投稿いたしましたが、記事を加筆して再投稿いたします。 長文になりますが、よろしくお願い致します。 原因不明の理由によって、アップロードしたswfファイルが削除できなくなって困っています。 元々は www.aaa.jp/bbb/ccc.swfというファイルでした。 Googleで小社を検索すると、 www.aaa.jp/bbb/bbb/ccc.swfというアドレスがgoolgeの検索一位に表示されるようになりました。しかしながらftpで確認しても、bbbの下の階層のbbbのフォルダは存在しないフォルダで、削除ができずに困っています。 試みた対策は以下の通りです。 (1)オリジナルのwww.aaa.jp/bbb/ccc.swfのファイルがなんらかの悪さをしているのではないかと思い、削除しました。結果変わらず。 (2)レンタルサーバー会社に連絡し、サーバー内を確認してもらいましたが、やはりbbbの下のフォルダbbbは存在しない。なにかのファイルが影響しているかと思われるが、こちらでは対処の仕様がないとのこと。 (3)googleのsearch console URLの削除をリクエストしましたが、拒否されました。 (4)仮にwww.aaa.jp/bbb/bbb/bbb/bbb/bbb/ccc.swfといったでたらめなアドレスを入れても、同じページが表示されます。 (4)に関して、レンタルサーバー会社のご担当者から以下のようなご返事を頂戴しました。 >/bbb をいくつ付けても表示される という状況は /bbb をいくつ付けても表示できるようにコンテンツを作成しているためとなります。こちらが意図した動作であるか何らかのプログラムの不具合であるかは分かりかねます。 (自分にはそのような難しいwebpageはとても書けないと思うのですが、) Flashやjava script, html5などがそのような挙動をする可能性があるのでしょうか。 ご担当者氏からは、フォルダbbbごと削除する方法をご提案いただきましたが、 ことは大事で、その勇気がありません。

    • ベストアンサー
    • HTML

専門家に質問してみよう