デフォルトのドキュメント(index.aspx)に転送されるファイル名なしで'/'URLに投稿しているasp.netWebフォームがあります。マネージドパイプラインモードでアプリプール(.net v4.0)を実行している場合Classic
、フォームの値は受信ページで利用できます。モードで実行している場合Integrated
、フォームの値はページで使用できません。
デフォルトのドキュメントを使用するURLに投稿するときに、統合モードでフォームコレクションを維持するにはどうすればよいですか?
'/index.aspx'に直接投稿する場合、リクエストは1つだけで、フォームの値は保持されます。
'/'に投稿する場合、2つのリクエストがあります。1つは、によって処理されていると思います。もう1つDefaultDocumentModule
は、ページクラス(ASP.index_aspx)によって処理されます。
統合モードで2番目の要求を処理している別のハンドラー/モジュールがありますが、これを識別できません。
Application_EndRequest
イベント中にそれを特定しようとしています:
void Application_EndRequest(object sender, EventArgs e)
{
HttpApplication app = ((HttpApplication)sender);
int fieldCount = Request.Form.Count; // there are 5 fields in my POST
var handler = app.Context.Handler;
}
結果:
役職 '/'
クラシックモードEndRequest1
ハンドラー:ASP.index_aspx(System.Web.UI.page)
fieldCount:5クラシックモードEndRequest2
ハンドラー:System.Web.DefaultHttpHandler
fieldCount:5
フォームコレクションはページで利用できます。
統合モードEndRequest1
ハンドラー:ASP.index_aspx(System.Web.UI.page)
fieldCount:0統合モードEndRequest2
ハンドラー:null
fieldCount:5
フォームコレクションはページで利用できません。
2番目のリクエストを処理しているネイティブモジュール/ハンドラーはどれですか?
**アップデート: **
フォームコレクションを失った理由の答えを見つけました。「IIS7またはIIS7.5統合モードの既定のドキュメントではイベントハンドラーが発生しない可能性があります」。そこでFormControlAdapter
与えられた解決策はうまく機能しています。
ただし、リクエストを処理し、投稿されたフォームコレクションを削除しているモジュール/ハンドラーを特定することはできませんでした。疑っExtensionlessUrlHandler-Integrated-4.0
たが確認できなかった。イベントを使用してもApplication_EndRequest
、モジュールに関する情報は提供されませんでした。また、AdvancedLoggingはモジュールパイプラインに関する情報も提供しません。