IE中Json响应下载(7~10)

IE中Json响应下载(7~10),json,internet-explorer,c#-4.0,asp.net-mvc-4,http-headers,Json,Internet Explorer,C# 4.0,Asp.net Mvc 4,Http Headers,我试图上传一个文件并返回一个关于文件属性(名称、大小等)的json响应。它在除IE之外的所有浏览器中都能正常工作 IE尝试将JSON作为文件下载 我有IE10,通过从调试器更改浏览器模式和文档模式,在IE7到10上测试它 我使用的是asp.net mvc4,文件上传操作具有HttpPost属性,我使用返回json(myObject)返回json响应 这是我的http头 请求 Key Value Request POST /File/UploadFile/ HTTP/1.1 Accept tex

我试图上传一个文件并返回一个关于文件属性(名称、大小等)的json响应。它在除IE之外的所有浏览器中都能正常工作

IE尝试将JSON作为文件下载

我有IE10,通过从调试器更改浏览器模式和文档模式,在IE7到10上测试它

我使用的是asp.net mvc4,文件上传操作具有HttpPost属性,我使用返回json(myObject)返回json响应

这是我的http头

请求

Key Value
Request POST /File/UploadFile/ HTTP/1.1
Accept  text/html, application/xhtml+xml, */*
Referer http://localhost:63903/
Accept-Language en-NZ
User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Content-Type    multipart/form-data; boundary=---------------------------7dc1e71330526
Accept-Encoding gzip, deflate
Host    localhost:63903
Content-Length  1377002
DNT 1
Connection  Keep-Alive
Cache-Control   no-cache
响应

Key Value
Response    HTTP/1.1 200 OK
Server  ASP.NET Development Server/11.0.0.0
Date    Tue, 18 Dec 2012 23:44:19 GMT
X-AspNet-Version    4.0.30319
X-AspNetMvc-Version 4.0
Cache-Control   private
Content-Type    application/json; charset=utf-8
Content-Length  154
Connection  Close

我尝试了一些建议,但现在又回到了原点

您需要将json作为
text/html
返回,因为IE不知道如何处理
application/json
内容

return Json(myObject, "text/html");

不确定,但使用
text/x-json

return Json(myObject, "text/x-json");

尽管这个问题已经提了几个月了,我还是想再补充一条建议,以防其他人在使用ASP.NET MVC 3或4时遇到这个问题

根据我的经验,当IE试图将Json响应作为文件下载时,要纠正这个问题,只需在视图中添加对
jquery.unobtrusive
的引用

例如:

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")

一旦这一切就绪,IE将不再尝试从JsonResult控制器操作下载json响应。无需更改响应类型等

。。。有什么问题吗?我的坏。。。IE尝试将json作为文件下载。正确/最安全的内容类型可能是“text/plain”。如果您使用text/html并将html作为JSON属性之一的值返回,IE8和早期版本往往会对响应内容做一些奇怪的事情。当使用“text/html”作为内容类型并使用
AjaxOptions
UpdateTargetId
属性时,如果您返回的内容类型为“text/html”,它将用返回的Json替换UpdateTargetId的内容。如果内容类型为“application/json”,则它将按预期工作。有什么办法可以解决这个问题吗?@RayNicholus我试图将内容类型更改为“text/plain”,ie8仍然尝试下载它,设置为“text/html”很好。返回“text/plain”对我来说在所有浏览器上都有效。只需让jquery在另一端使用json即可。请您也提供一个对“IE不知道如何处理应用程序/json内容…”语句的引用(如果可能,请来自Microsoft)?谢谢我已经将此文件包含到我的html页面中,但IE仍尝试下载json响应。有什么帮助吗?我有webApi 2.0