非常奇怪的问题。
我有一个使用弹出式编辑的MVC4 web应用程序(通过JQueryUI和部分视图),当应用程序在调试模式下构建时,或者在发布模式下构建并在IIS Express上运行时,它工作得很好。
HttpPost动作返回一个包含错误的HTML局部视图(它重新填充UI对话框)或一个JSON响应return Json(new { success = true });
如果我将DEBUG版本部署到IIS,它也可以正常工作。
然而,如果我部署一个发布构建到IIS它停止工作和客户端浏览器(所有他们)开始处理我的json响应作为文件下载......?!
我已经修改了请求,它们是不同的.....那些工作发送头:
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
…而那些失败的.....
Accept: text/html, application/xhtml+xml, */*
Content-Type: application/x-www-form-urlencoded
…没有X-Requested-With标头。
TBH我不知道为什么REQUEST头会不同,只是基于构建配置....?帮助吗?
我找到了答案......谈谈完美风暴....
我使用JQuery 1.9.1。显然,最新版本的JQuery会导致"绑定"中断.....
在调试模式下,甚至在IIS Express发布模式下,捆绑都没有做任何事情。然而,当我将发布模式发布到IIS时,它突然活跃起来.....然后马上破坏了我的javascript
…这阻碍了我的JQuery。处理程序重写表单提交按钮.....
…这导致表单通过HTML提交,而不是AJAX......
…这会导致JSON响应被浏览器"作为文件下载"......
…这让我觉得一开始问这个问题有点愚蠢,因为所有的线索都在那里.....
当然,解决方案是修复jquery*.min.js文件,这样它们就不会破坏绑定(如所附问题/答案所述)。哼。