在回复客户端之前,还将Response.OutputStream的内容写入文本文件

时间:2016-02-19 09:07:24

标签: c# asp.net

我正在使用

using (StreamWriter writer = new StreamWriter(Response.OutputStream, System.Text.Encoding.UTF8));

为了直接写一些文本行并将它们作为附件发送到浏览器。

我现在也希望在文件中本地保存该文本,但我宁愿避免更改我的代码。在结束响应之前,我可以将Response.OutputStream的内容写入文本文件吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Stream对象的CopyTo方法。最后,您可以将整个OutputStream复制到另一个将其写入文件的版本。 (https://msdn.microsoft.com/en-us/library/dd782932(v=vs.110).aspx

答案 1 :(得分:0)

我相信你要求的是不可行的。我非常确定Response.OutpuStream不可搜索(属性CanSeek会产生false),这意味着您无法开始阅读其内容。它可能也不可读(属性CanRead产生false)。

尝试任何这些操作都会产生NotSupportedException

如果您需要进行某些基本日志记录,则可以通过enabling .Net standard network traces解决此问题。或按照建议here编码IHttpModule

否则,您可以将中间MemoryStreamStreamWriter一起使用,然后将此MemoryStream重置为Position 0,将其写入OutputStream,重置再次到Position 0,将其写入您的文件。