1

我有 WCF REST 服务,其目的是根据请求提供文件。

WebOperationContext.Current.OutgoingResponse.Headers.Clear();
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment;filename=" + fileNameWithExtension);
WebOperationContext.Current.OutgoingResponse.ContentType = contentType;
return new MemoryStream(file.Data);

下载它适用于除 IE8 以外的所有浏览器 - 每当我单击下载链接时,它都会打开一个新选项卡并自行关闭。我设法发现虽然例如 Chrome 能够正确识别文件名,但 IE8 看不到任何文件名 - 就像它忽略了标题中的文件名一样。有人知道如何解决这个问题吗?

编辑* 我发现如果我从链接中提取 URL 并手动将其放入 IE8 的地址栏中,第一次尝试下载失败,但第二次尝试继续下载。如果我看到 Fiddler 中发生了什么,我发现第一次尝试我看到以下标题:

Set-Cookie: ASP.NET_SessionId=rhyk5nxw3fmrkjonsjknntuw; path=/; HttpOnly

当我第二次尝试下载时,相同的标题不存在。

4

1 回答 1

0

所以事实证明我已经将缓存控件设置为无缓存,如果我从我的 WCF 代码中注释掉以下过程,IE8 可以很好地处理我的文件。诡异的。

//HttpContext.Current.Response.AppendHeader("Cache-Control", "no-cache"); //HttpContext.Current.Response.CacheControl = "无缓存"; //HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);

于 2013-05-09T10:11:09.420 回答