jQuery AJAX投稿から呼び出された.ashxハンドラーが、HttpContext.Requestのフォーム要素を受け取らないことがあります。
これが発生すると、リクエストにはViewState要素のみが含まれるか、要素がまったく含まれません。
IE7、IE8、およびIE9でのみ失敗することがあります(さまざまなブラウザーで1日あたり数千ヒット)。IEを使用してこれを自分で再現することはできず、「ほとんどの」IEユーザー(および他のすべてのユーザー)はこの問題を経験しません。
Javascript:
var data = $('form').serializeArray();
$.ajax({
type: "POST",
async: false,
dataType: "text",
url: "handler.ashx",
data: data
});
C#(handler.ashx):
void IHttpHandler.ProcessRequest(HttpContext context) {
var collection = SetCollection(context.Request);
// collection sometimes has just ViewState elements;
// sometimes it has no items
}
private NameValueCollection SetCollection(HttpRequest request){
return request.Form;
}
その他の情報:このサイトは、ロードバランサーを備えたWebファームの一部です。.net3.5の使用。IEにはリクエストヘッダーを生成する別の方法があることを読みました。これが関連しているかどうかわからない。
私の問題を解決するための洞察をありがとう。