将呈现的HTML页面导出到Word在IE中不起作用

时间:2011-03-17 17:21:29

标签: asp.net vb.net internet-explorer ms-word

我有一个呈现的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

2 个答案:

答案 0 :(得分:1)

您的托管环境是否添加了http标头? IIS could easily be configured to add headers正在弄乱你要发送的东西。它实际上很常见,可能是问题。你需要确定这一点,所以这里有一个调查建议:

尝试使用WebClient课程并查看回复headers

修改 - 更新

我刚注意到 - 你还记得把

Response.Clear();

在添加标题之前?它可能根本不是托管环境。但是,鉴于它在本地而不是在您的托管环境中工作,并且确定它是相同的代码,它仍然看起来像托管环境的不同之处,最合乎逻辑的选项是标题。

答案 1 :(得分:0)

我设置了Response.Charset =“”,并在导出HTML后始终执行Response.Flush(),Response.End()和Response.Close()。