【发布时间】:2012-08-29 09:09:46
【问题描述】:
我有一个带有 Web API 的 ASP.NET MVC 4 应用程序。它工作得很好。但是一个问题是 IE 不能从 web api 下载文件,而 chrome 和 firefox 可以。浏览器说
"Unable to open this internet site. The requested site is either unavailable or cannot be found."
根据IE 8 and client-side caching,看来是no-cache 设置导致了问题。所以我想在那个下载中设置私人缓存。但在 MVC 4 中,我发现 HttpResponseMessage 中没有属性“Cache”,也没有任何设置私有缓存的方法。任何人都可以展示如何做到这一点?
更新一:根据我的调试,不是缓存,而是下面代码中的`ContentDisposition'。
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(result);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
// response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
// {
// FileName = "PY75.xls"
// };
return response;
如果我像上面这样评论,IE 可以下载以 id 作为默认文件名的文件,但是当取消上面的评论时,它不能像上面描述的那样。知道如何解决这个问题吗?为什么 IE 无法识别 content-disposition 标头?
更新 2: 升级 IE 9 后,content-disposition 终于可以工作了,可以从 web api 下载。
【问题讨论】:
-
IE9 和 IE10 能识别
content-disposition标头吗?
标签: c# asp.net-mvc asp.net-mvc-4