拦截WCF客户端中的消息
有没有人有任何Web服务扩展的经验? 我花时间尝试从MS示例中创建Web服务扩展。
我有一个.net 3.5 Web服务客户端,通过VS IDE“Project> Add Service Reference”添加对WSDL的引用而构建。 这构建了我的Web服务客户端,一切正常。
我需要截取我的Web服务客户端的请求和响应正文。 我发现了许多对Web服务扩展的引用,但是我已经厌倦了攻击,并且无法解决我的扩展问题。
我在这里使用了MS示例“如何实现SOAP扩展”( http://msdn.microsoft.com/en-us/library/7w06t139.aspx ),它为请求/响应流构建了一个记录器。
相关的MS文章“Soap Message Modification”( http://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx )展示了如何为Web客户端启用SOAP扩展:
实现SOAP扩展
有两种方法可以在客户端或服务器应用程序上运行SOAP扩展。 首先,您可以配置应用程序以运行扩展。 要将SOAP扩展配置为针对所有Web服务(尤其是vroot)上的所有Web方法运行,请编辑Web.config文件中的
Element部分。 以下代码显示type属性值必须位于一行,并包含扩展的完全限定名称,以及签名程序集的version,culture和public key标记。
在
我已将traceextension编译到自己的类库中,并在Web服务项目的web.config中引用它,如下所示:
没有快乐。 没有记录任何内容,也没有命中断点。
然后我删除了引用的类,并将源代码放入Web服务项目中。
我尝试添加对它的引用(我的命名空间是ServcieTest001):
我使用以下线程作为指南,使我能够扩展“获取-wot-soap-data-from-a-web-reference-client-running-in-asp-net”( http://stackoverflow.com/questions / 300674 / getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net )。
仍然没有快乐。 然后我从上面的线程中复制了代码,当我发出SOAP请求时仍然无法触发扩展。
任何人都可以指向一个function可下载的Web服务扩展演示项目,所以我可以反汇编它,找出我错过的东西?
John是对的,您可以使用实现IClientMessageInspector的自定义客户端行为拦截客户端上的消息。 请参阅如何:在MSDN 上检查或修改客户端上的邮件 。
关于它的唯一“棘手”是,如果您计划修改邮件正文,那么您将需要首先创建原始邮件的副本。 有关详细信息,请参阅使用消息类 。
你有可能想rest一下。
您永远不想使用WSE。 WSE已经过时了。
您不希望使用ASMX Web服务 – Microsoft现在认为它们是“遗留”技术,并且不会修复错误。 顺便说一下,WSE是基于ASMX的,那么它是什么呢?
您只想使用Windows Communication Foundation。 MSDN上的WCF开发中心位于http://msdn.microsoft.com/wcf/ 。
玩得开心,远离讨厌,古老,过时的东西。
是的 – 我太累了。
我认为 Web服务扩展使用“Web引用”(.net 2),而不是“服务引用”(.net 3)。
所以我想改变我的问题 – 如何拦截连接到遗留Web服务的.net 3“服务引用”的请求和响应?
上述就是C#学习教程:拦截WCF客户端中的消息分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1022053.html