問題
IIS7 Webサイトのデフォルトページから(UpdatePanelコントロールを使用して)AJAX部分更新要求を行おうとすると、失敗します。更新されるhtmlを返す代わりに、ページ全体を返します。これにより、MSAJAXが発生します。解析のたわごとを投げるJavascript。
疑わしい原因
原因を2つの問題に絞り込みました。特定のカスタムhttpモジュールを登録しているときにデフォルトページにAJAXリクエストを送信することです。http:// localhostへの部分的なレンダリング要求は失敗しますが、http://localhost/default.aspxへの部分的なレンダリング要求は正常に機能します。また、カスタムHttpModuleで次の行を削除した場合:
_application.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
AJAX部分レンダリングは正しく機能します。Wierdハァッ?
もう1つの奇妙なこと... trace.axdを見ると、部分レンダリング要求が失敗すると、1つの部分レンダリング要求に対して2つのPOST要求がログに記録されることがわかります。1つはdefault.aspxページが正常に実行されます(トレース情報などpage_loadがログに記録されるため)が、コンテンツは生成されず、実際には実行されていないように見える(トレース情報はログに記録されない)がコンテンツを生成する(HTTP_CONTENT_LENGTHが0より大きい)秒。
助けてください! HTTPモジュールまたはMSAJAXHttpモジュールについて十分な知識を持っている人が、なぜこれが発生しているのかを説明できれば、私は非常に感謝しています。現状では、明らかな回避策は、リクエストのURLが「/」の場合にdefault.aspxにリダイレクトすることですが、これが発生している理由を本当に理解したいと思います。