我有一个呈现的HTML页面,我将导出到MS Word并通过单击按钮下载。
以下是按钮点击中的代码段。
` Me.EnableViewState = False
Response.ContentType = "application/vnd.ms-word"
Response.AddHeader("Content-Disposition", "attachments;filename=XXXXXXX.doc")
Response.Buffer = True
Response.BufferOutput = True`
该功能在Firefox和Firefox中运行良好。我检查系统测试环境(本地)时的IE。然而,当它被转移到托管服务器(生产环境)时,该功能在IE中不起作用,但仍然在Firefox中完美运行。
我不确定在哪里检查确切的问题。这可能是缓存相关的问题吗?
在IE中,它只是不打开下载窗口,当渲染的HTML内容类型发生更改并刷新响应流时,我们将获得该下载窗口。没有例外。
我收到了以下回复标题:
HTTP/1.0 200 OK
Cache-Control: private
Content-Length: 15189
Content-Type: application/vnd.ms-word;
charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNet-Version: 2.0.50727
Content-Disposition: attachments;filename=NewAccountForm.doc X-Powered-By: ASP.NET
Date: Fri, 18 Mar 2011 10:18:07 GMT X-Cache: MISS from Gateway X-Cache-Lookup: MISS from Gateway:808 Via: 1.0 Gateway (squid/3.0.STABLE10) Proxy-Connection: keep-alive
答案 0 :(得分:1)
您的托管环境是否添加了http标头? IIS could easily be configured to add headers正在弄乱你要发送的东西。它实际上很常见,可能是问题。你需要确定这一点,所以这里有一个调查建议:
修改 - 更新
我刚注意到 - 你还记得把
Response.Clear();
在添加标题之前?它可能根本不是托管环境。但是,鉴于它在本地而不是在您的托管环境中工作,并且确定它是相同的代码,它仍然看起来像托管环境的不同之处,最合乎逻辑的选项是标题。
答案 1 :(得分:0)
我设置了Response.Charset =“”,并在导出HTML后始终执行Response.Flush(),Response.End()和Response.Close()。