非常奇怪的问题。
我有一个MVC4 Web应用程序,它使用弹出编辑(通过JQueryUI和部分视图),当应用程序在调试模式下构建时,或者它是在发布模式下构建并在IIS Express上运行时,它可以正常工作。 / p>
HttpPost操作要么返回包含错误的HTML部分视图(重新填充UI对话框),要么返回JSON响应
return Json(new { success = true });
如果我将DEBUG构建部署到IIS,它也可以正常工作。
但是,如果我将一个RELEASE版本部署到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头只是基于构建配置而不同....?! 帮助
答案 0 :(得分:0)
我发现答案是什么......谈论一场完美的风暴......
我使用的是JQuery 1.9.1。 显然是最新版本的JQuery cause "bundling" to break .....
在调试模式下,甚至在IIS Express上的发布模式下捆绑都没有做任何事情。然而,当我向IIS发布发布模式时,它突然出现在生活中......并且很快就破坏了我的javascript。
....这阻止了我的JQuery.on处理程序覆盖表单提交按钮.....
....这导致表单通过HTML而不是AJAX提交......
....这导致JSON响应被浏览器“下载为文件”......
....由于所有的线索都在那里,这让我觉得有点愚蠢地提出这个问题......
当然,解决方案是修复jquery * .min.js文件,以便它们不会破坏捆绑(如附带的问题/答案中所述)。哼哼。