我有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
当我第二次尝试下载时,相同的标题不存在。
答案 0 :(得分:0)
所以事实证明我已经将缓存控制设置为无缓存,如果我从我的WCF代码中注释掉以下过程,IE8处理我的文件就好了。怪异。
// HttpContext.Current.Response.AppendHeader( “缓存控制”, “无缓存”); //HttpContext.Current.Response.CacheControl =“no-cache”; //HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);