Descarga de respuesta Json en IE (7 ~ 10)

Estoy intentando subir un archivo y devolver una respuesta JSON con respecto a las propiedades (nombre, tamaño, etc.) del archivo. Funciona bien en todos los navegadores excepto en IE.

¡IE intenta descargar el JSON como un archivo!

Tengo IE10 y lo pruebo en IE7 a 10 cambiando el modo de navegador y el modo de documento del depurador.

Estoy usando asp.net mvc4, la acción de carga de archivos tiene el atributo HttpPost y estoy devolviendo la respuesta json usando return Json (myObject);

Y aquí están mis encabezados http

Solicitud

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 

Respuesta

 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 

Probé algunas sugerencias, pero ¡hasta ahora volvemos al punto uno!

Tendrá que devolver el json como text/html ya que IE no sabe qué hacer con los contenidos de la application/json .

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

No estoy seguro, pero podría funcionar ( y sería más correcto si lo hace ) usar text/x-json

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

Aunque esta pregunta tiene algunos meses, pensé en agregar una sugerencia más, por si alguien más está usando ASP.NET MVC 3 or 4 y se encuentra con este problema.

En mi experiencia, cuando IE intenta descargar la respuesta Json como un archivo, todo lo que tiene que hacer para corregir el problema es agregar una referencia a jquery.unobtrusive a su vista.

por ejemplo:

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

Una vez que esto esté en su lugar, IE ya no intentará descargar la respuesta json de una acción del controlador JsonResult. No es necesario cambiar el tipo de respuesta, etc.