0

从 jQuery AJAX 帖子调用的我的 .ashx 处理程序有时不会在 HttpContext.Request 中接收表单元素。

发生这种情况时,请求要么仅包含 ViewState 元素,要么根本不包含任何元素。

它仅在 IE7、IE8 和 IE9 上偶尔失败(各种浏览器每天点击数千次)。我自己无法使用 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;
}

其他信息:该站点是具有负载平衡器的网络场的一部分。使用.net 3.5。我读到 IE 有不同的生成请求头的方式;不确定这是否相关。

感谢您对解决我的问题的任何见解。

4

1 回答 1

0

已修复:Firefox 中也存在此问题,这有助于解决问题,因为我可以使用 Firebug。

这个处理程序被构建用于向服务器发布信息并在出现任何错误时抛出服务器异常(即 javascript 不需要响应)。Firefox 和 IE 期待对 javascript 的响应;Firefox 正常失败(抛出服务器错误但仍在工作);IE 因浏览器崩溃而严重失败。

我在处理程序的末尾添加了一个 context.Response.write("true") ,它不再抛出错误或死亡。

希望这可以帮助其他人。

于 2012-10-02T16:59:43.620 回答