如何异步写入HTTP请求内容到文件?

时间:2010-12-30 10:26:25

标签: c# .net asp.net http

我使用Ajax请求在HTTP正文中传递一些数据。可以使用Request.InputStream访问服务器上的这些内容。现在我想将它写入服务器磁盘上的文件异步。怎么做?

如果使用HTTP发送的数据更多,那么我不希望服务器应用程序死亡/受到影响。所以我想异步写它。

以下是关于我正在尝试做什么的参考样本......

System.IO.Stream str; 
// Create a Stream object.
str = Request.InputStream;
// TO DO Write it to file asyncronously ...
str.Write(someFile, 0, strLen);

3 个答案:

答案 0 :(得分:0)

Stream.BeginWrite& Stream.EndWrite是要看的东西。 Try this MSDN link.

答案 1 :(得分:0)

一种方法是,假设你很高兴无法控制阅读流(即你相信其他东西会对它感到高兴,或者对它没有发生,或者没有完全发生,那就是使用'虚拟流' ”。

如果你创建一个“包装”你想要使用的流并将所有调用传递给那个底层流的类,你可以在read方法中挂钩你自己的逻辑,这样当你的流的read方法被调用时,你会从基础流,写入您自己的流,然后将其传回。

这不是100%异步,因为流的读者会等到你在接收缓冲区之前将缓冲区写入文件,但它不会强迫读者等到你读完整个流并且也可以工作以及不可寻找的流。

我用完整的源代码编写了一个与BizTalk相关的whitepaper,如果你很乐意忽略BizTalk位,那么详细讨论流实现

答案 2 :(得分:0)

写文件时你想做什么?有些东西告诉我你错了,所有正确的HTTP服务器都是多线程的,所以无论请求运行多长时间,其他请求也可以并行服务。