asp.net响应双内容类型

时间:2011-11-03 15:15:20

标签: asp.net c#-4.0

我正在for循环中使用Page.Response.Write(“”)向浏览器发送大量excel内容数据。

在开始循环之前,我将reponse.context属性的conetnt类型更改为“ms-excel”。

如果我在for循环期间有异常,我会尝试通过注册HTML启动脚本块并将其写入浏览器来向浏览器弹出错误消息。在写入之前,我将内容类型更改为text / html。 但我收到一个错误,说发送HTTP标头后无法更改内容类型。

如何通知浏览器有关for循环期间发生的错误? 是否可以让更多的人重新回到同一个浏览器标签? 顺便说一句,现在我不想使用ASP.NET AJAX。

2 个答案:

答案 0 :(得分:0)

在更改上下文类型之前,您是否尝试过Response.ClearHeaders();

如果由于您的Response.Write导致问题而无效,您可能会考虑在决定内容类型然后设置标题之前建立字符串的路径。

  • 循环播放内容并添加到StringBuilder
  • 如果没有错误,请将contenttype设置为ms-excel并写出SB
  • 如果出现错误,请保留contenttype,因为它会根据需要写出错误消息。

答案 1 :(得分:0)

Page.Response.Write(“”)将数据发送到浏览器。当您这样做时,浏览器需要知道它获得的内容类型才能使其正确。如果你已经告诉浏览器你有什么样的内容(即使你没有,你已经使用Response.Write获取数据,它将使用默认值,我认为是text / html)然后你不能把它收回。无论你对客户说什么都说,你不能收回它。 解决问题的方法是按照Doozer的建议缓存回复。

/提笔