0

ASP.NETページのUpdatePanel内に単純なリピーターがあります。このリピーターには、すべてのRepeaterItemにボタンがあり、クリックすると、その特定のRepeaterItemに含まれる情報に基づいて別のページにリダイレクトされます。その時点まで、異常なことは何もありません。

私の開発用コンピューターでは、これらのボタンの1つをクリックすると、ajax呼び出しから次のような応答が返されます。

"1|#||N|M|pageRedirect||/somepage.aspx?q=bla|" 

そして、すべてが正常に機能します。スクリプトマネージャーがそのディレクティブを処理し、ブラウザーをJS経由でsomepage.aspx?q=blaに送信すると思います。

これを実際のWebサイト(専用サーバー、開発用コンピューターでのIISの使用を含め、両方の環境で同じ構成を維持しようとしています)に展開すると、この動作が変わります。これらのボタンの1つをクリックすると、サーバーから302 Found応答が返され、HTTPヘッダーには

Location: /somepage.aspx?q=bla

指令。最終的に発生するのは、ブラウザー(FF、chome、IE)が両方のページを処理することです(つまり、ajax呼び出しで、リダイレクトしようとしているページからGETを実行します)が、元のページのみがレンダリングされるため、リダイレクトは行われません。場所。2ページ目は読み込まれますが、「バックグラウンド」で表示されません。

私はこれらの2つの異なる行動の背後にある理由を見つけようとしています。グーグルで調べてみると、これは構成エラーである可能性がありますが(たとえば、この質問を参照)、私の構成は両方のサーバーで同じです。実際のWebサイトをいじりすぎることはできないので、現在、開発サーバーを本番サーバーのように動作させて、この違いがどこから来ているのかを把握し、適切なアクションを実行しようとしています。

どんな助けでもありがたいです。

4

1 に答える 1

0

リダイレクトが行われないため、ajax リクエストから 302 リダイレクト レスポンスを送信しても機能しません。したがって、ASP.NET Ajax はサーバー側でリダイレクトをインターセプトし、それをステータス コード 200 に変換してから、クライアント側で (window.location を使用して) 手動で「リダイレクト」を行います。

何らかの理由で、ASP.NET Ajax (ScriptModule) がデプロイ時に 302 応答を正しく変換していません。私の最善の推測は、それが ajax 要求であるとは考えていないということです。それが ajax 要求であるかどうかを判断するには、「X-MicrosoftAjax: Delta=true」ヘッダーが含まれているかどうかを確認します。このヘッダーがデプロイされたサイトのサーバー側で受信されているかどうかを確認してください。

于 2012-09-09T16:02:06.073 に答える