有没有人有任何使用 Web 服务扩展的经验?我花了一些时间尝试从 MS 示例中进行 Web 服务扩展。
我有一个 .net 3.5 Web 服务客户端,通过 VS IDE“项目 > 添加服务引用”添加对 WSDL 的引用来构建。这构建了我的 Web 服务客户端,一切正常。
我需要为我的 Web 服务客户端截取请求和响应正文。我找到了很多对 Web 服务扩展的引用,但是我已经厌倦了攻击,只是无法让我的扩展启动。
我使用了此处“如何实现 SOAP 扩展”(http://msdn.microsoft.com/en-us/library/7w06t139.aspx)中的 MS 示例,它为请求/响应流构建了一个记录器。
相关的 MS 文章“Soap 消息修改”(http://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx)展示了如何为 Web 客户端启用 SOAP 扩展:
实现 SOAP 扩展
有两种方法可以在客户端或服务器应用程序上运行 SOAP 扩展。首先,您可以配置应用程序以运行扩展程序。要将 SOAP 扩展配置为针对所有 Web 服务(尤其是 vroot)上的所有 Web 方法运行,请编辑
<soapExtensionTypes>
Web.config 文件中的 Element 部分。以下代码显示 type 属性值必须位于一行,并且包括扩展的完全限定名称,以及签名程序集的版本、文化和公钥标记。<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" />
我使用以下线程作为指导,使我能够扩展“getting-raw-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 服务扩展演示项目,这样我就可以反汇编它并找出我缺少的东西?