我正在使用以下asp.net代码来传输word文档。
Response.Clear();
Response.ContentType = "application/vnd.ms-word";
Response.AddHeader("content-disposition", "attachment;filename=\"" + Letter.WordFileName.Replace(" ", "%20").Replace("&", "And") + "\"");
Response.BinaryWrite(Letter.WordDocument.ToMSWordDocument());
Response.End();
上周,我尝试在ie8
中传输文件时开始收到以下消息无法从[server]
下载[file]无法打开此Internet站点。请求的网站不可用或无法找到。请稍后再试。
更新到ie9后我没有收到错误,但我的大多数用户仍然使用ie8。我觉得这可能与Windows安全补丁有关,但我从谷歌搜索中找不到这样的东西。
以下是一些更多信息:
响应标题
HTTP / 1.1 200好的 缓存控制:private,no-cache =“Set-Cookie” Content-Type:application / vnd.ms-word 服务器:Microsoft-IIS / 7.5 设置Cookie:.ASPXAUTH = 74B339B8F7578C646C5ABEB1DD798B73409F51EBE28A1EE3CA0E9B16CDA93C1A3B81CA6A82ABABF940A3E828B5B1D7DE503940AD669CD435E28DE36848A706ECA2BF0CAAB408263DFA22166CB796FEAE27A96950DE37A70619C2F59D9C138F39749DC814D41F9839F3414AEDDA7A3A26F5DA92EFAF09BC8C965F61E02DB68B94D8D43C3201528B601896108B0A30B3CDEDF389F3C3D463E2163596186BFE6BADB83DB635193CDE01DA06E0CB3D0F9FAC1C392DA5E30052AD530B803FA92FD72EA7D768B5BB1505BA26B566AED1DCDE7E5423143803434F2C32572427CD6B68A49126E7084947CC52CE315FAC9A94DA1EE4BF765A0F4D2277679F41F6F19275B0067C6223517A959811A24B36C882F9F6D76B1C408B109DBA33991FDC79517A4E7B4C24DEC38E00FA2C7CFBA5566067017CBF34C71D2CC33605A621277C5E6D3E34F45529536140841A0B98720F7129CF49EDB4D3C61553865EE1A332B4273A674FED651FA7525ED6BF180A578B3C0BA0422C40B4C09663BFA3D6E4DD69171C4B2A558506E1B1AFA5788C37EEB8BB2052BA02C91DB14CA0DC5D12F56E62A3016982521480CA104DC3E7451CC92F89003BDE64378961CB8D40753D4031D1CB5A8B78BE6004B97E2128F8ABE584B7961CECF4983C54A48B5E0AB662ECAFF4E04E984C663EA2CBE4C2161F B1D074B06F297378BA15F36927870735833076BB2E43E60BE83E82EBB0138290A761803535BF0590C22F6AAC01397E67C5FE52A3AB5EBB;路径= / content-disposition:attachment; filename =“Septa%20Roberts%20Compound%2020111226 [1] .doc” X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET 日期:2012年1月10日星期二16:07:51 GMT 内容长度:147456
答案 0 :(得分:2)
尝试替换
Response.End();
与
Response.Flush
CompleteRequest()
在代码块的末尾(有关额外信息,请参阅here和there)。也许响应重定向有一些麻烦,它会导致服务器的响应在浏览器的眼睛上失败。
答案 1 :(得分:2)
经过一些研究后,我发现asp.net的安全补丁更改了标题,这在IE8中会以某种方式导致这种行为。更多信息:CLICK
答案 2 :(得分:0)
我认为这样做是因为浏览器有一些导致这种情况导致其他工作站在尝试访问IE 8中的此站点时遇到此问题吗?
1)使用检查恶意软件 - SpyBot-Search&毁灭 - http://www.safer-networking.org/index2.html - 广告软件 - http://www.lavasoft.nu/home.php
2)您是否安装了任何额外的防病毒软件或安装了防火墙,如果是这样的话,它们是什么?它们可能需要至少在临时基础上完全卸载才能尝试找出造成这种情况的原因。
答案 3 :(得分:0)
你可以尝试做的是将word文档上传到另一台服务器,并在fiddler运行时使用IE8下载它。然后查看响应标题,看看代码中缺少/不同的内容。
答案 4 :(得分:0)
添加此内容并试一试:
// check for IE
if (Request.Browser.Browser == "IE")
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.AppendHeader(@"Pragma", @"no-cache");
}
答案 5 :(得分:0)
我找到了根,不要使用这个人,除非你真的知道如何解决IE8的情况(实际上我碰巧发现它只发生在IE8中),如果你发现了使用它:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
和代码中的这一行:
Response.ClearHeaders();
Response.AddHeader("Cache-Control", " no-store, no-cache ");
感谢作者:
刚刚发现这个,也可能会有所帮助;
注意ASP.NET SetCacheability方法
MSDN 上的HttpCacheability枚举:
NoCache :没有人可以缓存该页面。
私有:只有浏览器可以缓存它(但不能共享代理)。这是默认值
公开:每个人都可以缓存页面,包含代理
服务器:页面仅缓存在服务器上(如NoCache,因此浏览器不会缓存页面)
ServerAndNoCache :服务器和NoCache ......与服务器相同
ServerAndPrivate :服务器和私人......与私人相同
http://codeclimber.net.nz/archive/2007/04/01/Beware-the-ASP.NET-SetCacheability-method.aspx