2

この問題は、あなたの提案のおかげで解決されました。詳細は下部をご覧ください。どうもありがとうございました!

当社の ASP.NET Web サイトは、いくつかの特定の高度に安全な国際的な場所からアクセスされます。正常に動作していますが、非常に奇妙な動作を示す別のクライアント ロケーションを追加しました。

特に、ユーザーが検索基準を入力して検索ボタンをクリックすると、結果リストは空を返します。「0 件の結果が返されました」というテキストさえ表示されないため、Repeater コントロールがまったくバインドされていないかのようになります。同様の動作は、サイトの他の部分でも見られますが、すべてではありません。ユーザーはサイトに正常にログインでき、プロファイル情報が表示されます。

それらとまったく同じ資格情報を使用してローカルでサイトにログインしましたが、サイトはここから正常に機能します。慎重に手順を実行したので、ユーザーの問題ではないと確信しています.

検索結果ページが最初にロードされるときに、検索結果ページの Page_Load にバインドします (条件はクエリ文字列にあります)。すなわち

if (!IsPostBack) {
  BindResults();
}

BindResults() メソッド呼び出しをコメント アウトすることで、まったく同じ動作をローカルで再現できます。

IsPostBack の値がどのように計算されるか知っている人はいますか? 非常に安全なファイアウォール設定により、別のページからのリダイレクトであっても IsPostBack が常に true を返す可能性はありますか? 問題は他の場所にある可能性があるため、それはニシンである可能性があります。ただし、結果を正確に複製します。

私はサイトにアクセスできないので、トラブルシューティングは指示を出し、結果を教えてもらうことに限られています。

御時間ありがとうございます!

追加情報: クライアントは、既定のルールを実行する Microsoft ISA 2006 ファイアウォールの背後にあります。このサイトは Internet Explorer の信頼済みサイト リストに追加され、FireFox と Google Chrome で試してみましたが、すべて同じ結果でした。

解決策:私にとっての勝者は、Fiddlerを使用するという提案でした。Web 開発者がなくてはならない優れたツールです。これを使用して、問題を再現するまで、リクエストからさまざまなヘッダーを取り除くことができました。このような紛らわしい問題でよくあることですが、実際にはこのバグを引き起こした 2 つの要因がありました。

要因 1 – 可能な場合、Web アプリケーションはすべての主要なブラウザーでサポートされている GZIP 圧縮を使用します。ファイアウォールは、GZIP 解凍サポート (Accept-Encoding: gzip、deflate) を指定するヘッダーを取り除いていました。

要因 2 – コードのバグにより、コンテンツが非圧縮で送信されるときに一部の処理がバイパスされました。この問題は、アプリケーションが GZIP 解凍をサポートしている限られた利用者によって使用されていたため、以前は気付かれませんでした。

4

7 に答える 7

3

技術に精通している場合は、Fiddler などをダウンロードして、HTTP セッション全体をキャプチャし、保存したセッションを送信してもらいます。中に何か出てくるかも。

その間、ISA Server のインストール (必要な場合は評価インストール、またはサブを持つ誰かを知っている場合は MSDN からインストール) を入手できるかどうかを確認し、それをローカルに複製できるかどうかを確認します。

于 2008-12-02T04:36:00.713 に答える
1

IIS ログをチェックして、要求がサーバーに届いているかどうかを確認します。ISA セットアップは、最初の要求をキャッシュし、後続の要求でそれを提供している可能性があります。

于 2008-12-02T15:59:01.210 に答える
1

クライアントが Javascript を無効にしていて、_EVENTTARGET フォームの値を取得していない可能性はありますか?

于 2008-12-02T03:21:23.827 に答える
1

特定の POST リクエストから GET リクエストを作成するプロキシのようなものかもしれません...

IsPostBack がどのように計算されるかはわかりませんが、HTTP リクエストをチェックして、それが POST か GET かを確認していると思います...

于 2008-12-02T03:57:26.500 に答える
1

オーイエー。ところで、それは間違いなく「_EVENTTARGET」ではありません...

Ra-Ajaxはこれらのパラメーターをサーバーに渡さず、それら (Ra-ajax リクエスト) は IsPostBack リクエストとして処理されるため、私はこれを知っています...

于 2008-12-02T03:59:03.423 に答える
1

検索ページと同じものを渡すテスト投稿ページを作成し、Page_Load ですべての投稿を書き戻して、特に __VIEWSTATE が渡されることを確認してください。

foreach (string key in Request.Form)
{
    Response.Write("<br>" + key + "=" + Request.Form[key]);
}

次に、ユーザーの 1 人に、そのテスト ページに表示されている内容を元に戻すように依頼します。

編集: 一部のファイアウォールが VIEWSTATE を破損する可能性があるというドキュメントと、それを回避するいくつかの方法があります: View State Overview

于 2008-12-02T14:39:52.833 に答える
1

場所、場所、場所。ユーザーの文化を確認します。通常、それは問題を引き起こします。

于 2008-12-02T14:48:43.177 に答える