Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
解释如何使用WCF一次性读取消息对象?_Wcf_Idispatchmessageinspector - Fatal编程技术网

解释如何使用WCF一次性读取消息对象?

解释如何使用WCF一次性读取消息对象?,wcf,idispatchmessageinspector,Wcf,Idispatchmessageinspector,我有一个MessageInspector,它记录通过的消息?为什么您只能阅读一次邮件,并且必须创建副本?我看过MSDN中的文档,我需要创建一个缓冲副本,但我不知道为什么它是这样实现的?有人能给我解释一下吗 private static void SendRequest(string request) { var req = (HttpWebRequest) WebRequest.Create("http://urltoservice.svc/MethodToCall"); req.Content

我有一个MessageInspector,它记录通过的消息?为什么您只能阅读一次邮件,并且必须创建副本?我看过MSDN中的文档,我需要创建一个缓冲副本,但我不知道为什么它是这样实现的?有人能给我解释一下吗

private static void SendRequest(string request)
{
var req = (HttpWebRequest) WebRequest.Create("http://urltoservice.svc/MethodToCall");
req.ContentType = "text/xml";
req.Method = "POST";

using (var stm = req.GetRequestStream())
{
    using (var stmw = new StreamWriter(stm))
    {

        stmw.Write(request);
    }
}


byte[] myData;
using (var webResponse = req.GetResponse())
{

    var responseStream = webResponse.GetResponseStream();
    myData = ReadFully(responseStream);
}

// Do whatever you need with the response
string responseString = Encoding.ASCII.GetString(myData);
}

如果我没有访问服务器部件的权限,或者无法将MessageInspector更改为使用消息的缓冲副本,我可以修改上面的消息以创建流的副本吗?如果是这样的话,我该怎么做呢?

您可以将邮件复制到缓冲区中,然后进行播放。
有关处理邮件的更多详细信息,请访问以下链接:

您可以将邮件复制到缓冲区并播放。
有关处理邮件的更多详细信息,请参见以下链接:

查看邮件正文只能检索一次的状态。这使得只处理向前的流成为可能。-因此,这让我相信这是一种性能优化措施,最重要的是,它导致了本文所述的高级开发人员的架构决策。不过我很感激。我不知道什么是只前进的潮流?谁投了反对票?您能解释一下原因吗?仅向前的流是一种只能在向前方向读取的流—从开始到结束一次。一旦你完成了,就没有办法回头再开始——你也不能在阅读过程中跳转。功能较低(在某些方面),但通常要快得多。好的,有没有办法解决这个问题,比如将流复制到另一个流,并将位置设置为0。查看消息正文只能检索一次的状态。这使得只处理向前的流成为可能。-因此,这让我相信这是一种性能优化措施,最重要的是,它导致了本文所述的高级开发人员的架构决策。不过我很感激。我不知道什么是只前进的潮流?谁投了反对票?您能解释一下原因吗?仅向前的流是一种只能在向前方向读取的流—从开始到结束一次。一旦你完成了,就没有办法回头再开始——你也不能在阅读过程中跳转。功能较差(在某些方面),但通常速度要快得多。好的,有没有办法解决这个问题,比如将流复制到另一个流并将位置设置为0。