我开发了一个页面,通过AJAX将带有图像的表单发布到WebAPI2控制器。
我反复这样做;我让用户选择一堆图像,然后将它们添加到选择框中,然后用户可以从其他位置添加更多图像,或者他们可以从列表中删除项目。 因此,我将他们填写的表单提交给服务器。我每个图像专门做一次,所以我可以显示每个图像上传的进度。 一旦映像在服务器上,它就会被我的服务器端代码移动到安全的存储库中。应用程序池正在使用特定的AD帐户来完成它的工作。
这对我来说很有用,对于测试它的其他人来说非常有用,但我有一个单独的测试人员 - 在8中,他在IE中遇到间歇性错误。他不会在另一个浏览器中尝试它(我们没有真正的测试人员,只有我们的用户,这个人很顽固)
我的服务器端web api代码,它是同一个项目的一部分 - 甚至没有被击中。我记录了我们立即进入方法。此外,服务器端的应用程序日志中没有记录错误。 AJAX正在返回"错误"和" 0"。没有回复文字。我将所有AJAX错误记录到服务器地址(提交正常,BTW)
我最初使用MVC控制器而不是Web API编写了这个,但我转而希望它可以解决问题。它没有。
"提交的按钮"表单不是提交按钮。输入="按钮"。我的表单上没有提交按钮。表单没有要发布的地址。我将整个表单锁定,因此在上传项目时,不能单击任何按钮,也无法编辑任何元素。总之,我无法看到e.preventDefault();会有所帮助。
这实际上不是跨站点脚本,而且我在网上找不到任何暗示跨站点脚本编写策略可以随机跳转但看起来好像是。
有时,他提交表单并上传1/3的图片,其余错误。它不是图像类型,大小或任何图像 - 我复制了他上传的图像并用它们进行验证。
我们在服务器端禁用了跨站点脚本,我在我这边添加了一个JSONP格式化程序,并且测试了它没有错误。我们将继续测试是否确实解决了这个问题,因为他之前已经解决了问题,然后问题重新出现。
如果它真的是导致它的跨站点脚本,为什么? IIS服务器上是否会有一些东西让它选择一个不同的顶级域名,因为我没有在我的ajax请求中指定一个?
$.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在我的_layout中:
@Html.Hidden("HiddenCurrentURL", Request.ApplicationPath)
任何帮助将不胜感激。我现在不确定该怎么做。浏览器设置可以这样做吗?
编辑:他正在使用IE 11 - 我和我的其他测试人员一样。我有,还有其他几个,也在Chrome和Firefox中测试过。
Edit2:我们禁用了跨站点脚本,问题仍在继续。我觉得有趣的是,这个问题似乎只发生在深夜或凌晨,非工作时间。我检查了IIS组,他们说它正在运行,并且总是在"虽然...
答案 0 :(得分:0)
用户连接错误并且瞬间断开连接。它会中断ajax请求 - 那些尚未发送的请求仍会发送,到达服务器的那些将完成,其他请求失败。