为什么 JQuery AJAX 间歇性地返回错误 0?

Why is JQuery AJAX intermittently returning error 0?

我开发了一个页面,通过 AJAX.

将带有图像的表单发布到 WebAPI2 控制器

我反复这样做;我让用户 select 一堆图像,他们添加到 select 框中,然后用户可以从另一个位置添加更多图像,或者他们可以从列表中删除项目。 因此,我将他们用图像填写的表格提交给服务器。我专门为每张图片做一次,这样我就可以显示每张图片的上传进度。 一旦图像在服务器上,它就会通过我的服务器端代码移动到一个安全的存储库。应用程序池正在使用特定的 AD 帐户来完成它的工作。

这对我很有效,对其他测试过它的人也很有效,但我有一个测试人员——八分之一——在 IE 中出现间歇性错误。他不会在其他浏览器中尝试(我们没有实际的测试人员,只有我们的用户,而且这个很固执)

我的服务器端 Web api 代码(属于同一个项目的一部分)甚至没有被攻击。我记录下我们立即进入了该方法。此外,服务器端的应用程序日志中没有记录任何错误。 AJAX 返回 "error" 和“0”。没有回复文本。我正在将所有 AJAX 错误记录到一个服务器地址(顺便说一句,它提交得很好)

我最初是用 MVC 控制器而不是 Web API 写的,但我转而希望它能解决问题。没有。

"submits" 表单的按钮不是提交按钮。即输入="button"。我的表单上没有提交按钮。该表格没有地址 post 。我锁定了整个表单,因此在上传项目时无法单击任何按钮,无法编辑任何元素。总之,我看不到 e.preventDefault();会有帮助。

这实际上不可能是跨站点脚本,我在网上找不到任何表明可以随机触发跨站点脚本策略的信息,但看起来确实如此。

有时,他提交表格和1/3的图片上传,其余错误。这不是图像类型、大小或任何其他 - 我复制了他上传的图像并用它们来验证。

我们在服务器端禁用了跨站点脚本,我在我这边添加了一个 JSONP 格式化程序,他测试它没有错误。我们将继续测试,看它是否真的解决了问题,因为他之前用过,然后问题又出现了。

如果确实是跨站点脚本引起的,为什么?由于我没有在我的 ajax 请求中指定一个顶级域,IIS 服务器上是否有某些东西使其选择了不同的顶级域?

 $.ajax({
    url: getBaseURL() + 'API/FileForm',
    type: 'POST',
    data: dataString,
    cache: false,
    contentType: false,
    processData: false
})

其中 getBaseURL() 表示:

function getBaseURL() {
    var baseURL = $("#HiddenCurrentURL").val().trim();
    if (baseURL != "/") {
        baseURL += "/";
    }
    return baseURL;
}

HiddenCurrentURL 在我的布局中:

    @Html.Hidden("HiddenCurrentURL", Request.ApplicationPath)

如有任何帮助,我们将不胜感激。我不太确定现在该怎么办。浏览器设置可以做到这一点吗?

编辑:他正在使用 IE 11 - 我和我的其他测试人员也是。我和其他一些人也在 Chrome 和 Firefox 中进行了测试。

Edit2:我们禁用了跨站点脚本,但问题仍然存在。我认为有趣的是,这个问题似乎只发生在深夜或清晨,在下班时间。我检查了 IIS 组,他们说它是 运行 和 "always on" 不过...

用户的 wifi 连接状况不佳,并且瞬间断开连接。它会中断 ajax 请求 - 尚未发送的请求仍将发送,到达服务器的请求将完成,其他请求将失败。