- - PR -
POSTデータの信頼性について【ASP.NET】
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-20 01:28
お世話になります。
現在下記環境にてWEBシステムの開発を行っています。 ・開発環境:Visual Studio .NET 2003 ・言語:VB.NET ・クライアント:IE6 単体環境では特に問題は発生しなかったのですが、IISサーバーにモジュールを配置したところ 回線の遅い(回線品質の悪い)ADSL環境のみで、 ブラウザからテキストボックスなどに入力された値が、サーバーに来た際、 ASPのデザイン時に入れておいた値に置き換わるという問題が発生しています。 例として、 <asp:textbox id=text1 runat=server>ABC</asp:textbox> とデザインナで定義し、Loadイベント内でISPostBack条件でクリアして初回表示しているとします。 ボタンのクリックイベントで、通常はtext1.textからはブラウザから入力した値を取得することができますが、 問題が発生すると、text1.textの値が「ABC」になっています。 サーバー側でエラーチェックしようにも、ABCが実際にブラウザから入力されたものなのか、 デザイン時の初期値がなぜか入ってしまったのか判別できないため、 対処に困っています。 回線の遅いクライアントでしか発生しないため、POSTデータが一部ロストしているのでは ないかと思うのですが、そもそもPOSTデータの内容は通信経路において 保証されないものなのでしょうか? また、デザイン時の初期値になってしまうことは、ASP.NETの仕様?或いは欠陥なのでしょうか? よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-01-20 10:27
TCP/IP の仕様をあたってみたら?
こういう場合、まずはネットワーク上のデータを検査するでしょう。 「POSTデータの信頼性」については、そのあとに語りましょう。 _________________ | ||||||||
|
投稿日時: 2007-01-20 11:29
ASP.NET は良く知らないのですが、この「Loadイベント」とは、ブラウザー(クライアント)側のたとえば、
に相当するものでしょうか? もしそうだとしたら body のロードが完了しないことは普通にあると考えるべきです。 最後の1バイトの HTTP response をブラウザーが受け取っていなくても、ユーザーはテキストボックスに入力したりボタンを押せたり submit したりできるものです。 もし body のロードの完了まで待たせたいのならば、ロードを確認しなければ submit できないような仕組みを付けるなどをすべきです。もっとも、こういう仕組みのサイトはたまに見かけますが、ユーザーとしては使いにくいものです。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2007-01-20 12:00
違います。 クライアント側ではなく、サーバサイドのイベントです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-01-20 12:08
違います。「Loadイベント」と書いたのはサーバー側(ASP.NET)の Page_Loadイベントのことです。 submit前のロードを確認についてはもう一度確認してみたいと思います。 | ||||||||
|
投稿日時: 2007-01-20 21:19
まず、送ったものが正しいのか。その検査からした方が良くないですか? Vigil<impress.co.jp> とか使えば、データは見られるんだし。 _________________ | ||||||||
|
投稿日時: 2007-01-22 21:45
とりあえず解決したので報告です。
unibonさんのご指摘のとおり 画面ロードが完了する前にSubmitされていたことが原因でした。 formタグ内のonSubmitで、document.readyState != "complete" の場合、 送信しないようにすることで対応できました。 |
1