Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将HTTP请求内容异步写入文件?_C#_.net_Asp.net_Http - Fatal编程技术网

C# 如何将HTTP请求内容异步写入文件?

C# 如何将HTTP请求内容异步写入文件?,c#,.net,asp.net,http,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

我使用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);

Stream.BeginWrite和Stream.EndWrite是需要查看的内容

一种方法是,假设您很高兴不能控制流的读取(即,您相信其他事情会发生,或者很高兴它不会发生,或者不会完全发生),则使用“虚拟流”

如果您创建了一个类来“包装”您希望使用的流,并将所有调用传递给该底层流,那么您可以在read方法中钩住自己的逻辑,这样当调用流的read方法时,您就可以从底层流中读取、写入自己的流,然后将其传递回去

这不是100%异步的,因为流的读取器会等待直到您将缓冲区写入文件,然后再接收缓冲区,但它不会强制读取器等待直到您读取了整个流,并且也可以很好地处理不可查找的流


我用完整的源代码编写了一个与此相关的BizTalk,如果您愿意忽略BizTalk位,那么流实现将在此处详细讨论

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