相关疑难解决方法(0)

拦截WCF客户端中的消息

有没有人有Web Service Extensions的经验?我花时间尝试从MS示例中创建Web服务扩展.

我有一个.net 3.5 Web服务客户端,通过添加对WSDL的引用,通过VS IDE"Project> Add Service Reference"构建.这构建了我的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方法运行,请编辑<soapExtensionTypes>Web.config文件中的" 元素"部分.以下代码显示type属性值必须在一行上,并包含扩展的完全限定名称,以及签名程序集的version,culture和public key标记.

<configuration>
<system.web>
<webServices>
<soapExtensionTypes>
<add type ="Contoso.MySoapExtension,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"priority ="1"group ="0"/>
</soapExtensionTypes>
</ webServices>
</system.web>
</ configuration>

我已经将traceextension编译到它自己的类库中,并在web服务项目的web.config中引用它,如下所示:

<add type ="TraceExtension,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = ef8757fac167b8d8"priority ="1"group ="High"/>

没有快乐.没有记录任何内容,也没有命中断点.

然后我删除了引用的类,并将源代码放入Web服务项目中.

我尝试添加对它的引用(我的命名空间是ServcieTest001):

<add type ="ServiceTest001.TraceExtension"group ="High"priority ="1"/>

我使用以下线程作为指南,使我能够扩展"获取-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请求时仍然无法触发扩展.

任何人都可以指向一个功能可下载的Web服务扩展演示项目,所以我可以反汇编它,找出我错过的东西?

c# wcf soap wcf-client

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

soap ×1

wcf ×1

wcf-client ×1