【问题标题】:Detecting Outgoing SOAP Envelope检测传出的 SOAP 信封
【发布时间】:2015-09-15 09:30:09
【问题描述】:

我正在使用第三方 Web 服务并尝试在调用 Web 服务方法时记录传出的 SOAP 信封。

看到这篇关于How to capture SOAP envelopes when consuming a web service in ASP.NET. 的文章并实现了类似的方式。乙

但由于某种原因,ProcessMessage 没有被调用。

我的类和命名空间如下所示

namespace MyServiceClient
{
    public class MySeriviceSoap : SoapExtension
    {
     ......

还有我的app.config

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

  <system.web>
    <webServices>
      <soapExtensionTypes>
        <add type="MyServiceClient.MySeriviceSoap, MyServiceClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" priority="1" />
      </soapExtensionTypes>
    </webServices>
  </system.web>
</configuration>

请提供任何帮助

【问题讨论】:

    标签: c# web-services .net-4.0


    【解决方案1】:

    type 属性需要完全限定的类型名称。这在MSDN: &lt;add&gt; Element for &lt;soapExtensionTypes&gt;中有解释:

    type 指定要添加的 SOAP 扩展类。 type 属性值必须在一行上,并且包含完全限定的类型名称。当程序集放置在全局程序集缓存 (GAC) 中时,它还必须包含已签名程序集的版本、文化和公钥令牌。

    “完全限定类型名称”的格式类似于 Namespace.TypeName[, AssemblyName][, Version][, Culture][, Token]

    所以你需要这样的东西:

     <add type="MyServiceClient.MySeriviceSoap, YourAssemblyName" priority="1" />
    

    另见MSDN: Specifying Fully Qualified Type Names

    【讨论】:

    • 太棒了!会试试这个
    • 尝试使用完全限定的类型名称,但结果相同。我已经用新代码更新了问题
    • 哦,这是为 Web 服务 (ASMX) 准备的……您可能有一个 WCF 客户端。使用您使用的客户端更新您的问题。
    • 已经使用 Web 服务 (wsdl) 实现了一些东西
    • 你似乎不明白我在问什么。 客户端是通过 ASMX(wsdl.exe,添加 Web 服务引用)还是通过 WCF(svcutil.exe,添加服务引用)生成的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多