Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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#扩展SoapExtension-_C#_Soap_Stream_Asmx_Soap Extension - Fatal编程技术网

C#扩展SoapExtension-

C#扩展SoapExtension-,c#,soap,stream,asmx,soap-extension,C#,Soap,Stream,Asmx,Soap Extension,背景: 我试图编写一个简单的SoapExtension类来记录来自ASMXWeb服务的入站/出站Soap消息。接下来,我能够让事情顺利进行。然而,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码 问题: 我正在努力具体掌握的是示例中IO流的处理。我在网上读到的所有其他文章都以相同的方式处理流。。。首先获取对原始流的引用,创建内存中的“工作”流,然后根据需要交换内容 第一个问题是,在这种情况下,“流链接”是什么意思?我对流的理解是,写入任何流都会自动写入管道中的“内部”流。如果是这样,为

背景: 我试图编写一个简单的SoapExtension类来记录来自ASMXWeb服务的入站/出站Soap消息。接下来,我能够让事情顺利进行。然而,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码

问题: 我正在努力具体掌握的是示例中IO流的处理。我在网上读到的所有其他文章都以相同的方式处理流。。。首先获取对原始流的引用,创建内存中的“工作”流,然后根据需要交换内容

第一个问题是,在这种情况下,“流链接”是什么意思?我对流的理解是,写入任何流都会自动写入管道中的“内部”流。如果是这样,为什么需要手动将内容从一个流复制到另一个流


第二个问题是,在示例复制方法中,他们每次都在创建一个StreamReader和StreamWriter,而不处理它们——这是否给GC带来了额外的压力?在高流量的web服务上,您似乎不希望出现这种情况。。。我尝试使用语句包装这两个文件,但是处理读写器也关闭了流,这导致了更严重的错误。NET4有了新的Stream.CopyTo(Stream)方法,但是对于.NET3.5来说,有什么更好的方法呢?

好吧,通过链接流,基本上可以让不同的流以链接的顺序执行不同的操作。例如,您可以有一个压缩数据的流,然后是另一个加密数据的流(如果我们向另一个方向移动,则相反)


至于ChainStream本身,那么。。。关于这件事有很多话要说。我真的推荐这篇名为的文章,这篇文章非常深入,也涵盖了您遇到的大多数问题。

链接是在框架中完成的。获取原始流并返回将修改结果放在其中的流。该框架将把这个新流链接到任何其他扩展中

它是以这种方式实现的,因为链接“向后”工作。通常,您会在流的基础上添加新功能,但在这种情况下,您需要处理输入到原始流中的信息


在流上调用close与Dispose相同。

链接已断开。以下是Internet存档链接: