【问题标题】:Adding custom header to generated SOAP proxy将自定义标头添加到生成的 SOAP 代理
【发布时间】:2012-02-01 12:09:02
【问题描述】:

我从 wsdl 文件生成了一个代理类(C# VS 2008) Web 服务需要在 soap 标头中有一个元素。 当我尝试使用proxy.RequestSoapContext.Envelope.Header 添加此元素时,我收到一个空错误。信封为空。 我如何成为标题的自定义元素?

非常感谢。

【问题讨论】:

    标签: c# proxy wsdl soapheader generated


    【解决方案1】:

    试试这个

    EndpointAddressBuilder endpointAddressBuilder = 
              new EndpointAddressBuilder(proxy.Endpoint.Address);
    foreach (var item in headers) //headers is a Dictionary<string, string>
         endpointAddressBuilder.Headers.Add(
              AddressHeader.CreateAddressHeader(item.Key, "nameSpace", item.Value));
    proxy.Endpoint.Address = endpointAddressBuilder.ToEndpointAddress();
    

    希望这对你有用。

    【讨论】:

    • 谢谢阿马尔。那行得通!我花了一段时间,因为我生成的代理来自 wsdl.exe 而不是 svcutil.exe。
    • 如果我现在得到错误 No SOAPAction Header defined。有什么想法吗 ?我是网络服务的新手,发现它是对象等的雷区。
    • 我自己回答了这个问题。从 WcfBinding 切换到 Basic。
    • 很高兴听到这个消息。您也可以查看this 的帖子,可能会对您有所帮助。
    • 嗨,阿马尔。我希望问这样的问题不是不合适的。它只是你知道上下文,它可能更容易回答。我正在使用 client.Endpoint.Contract.ProtectionLevel = System.Net.Security.ProtectionLevel.Sign 这并不完全有效,因为签名的 URI 指向 _0 但消息正文没有 ID。我一直在寻找指定 ID 的位置。任何建议都将受到欢迎。 (顺便说一句,我发现 MS 实现 Web 服务的方式最混乱和尴尬)Tom 亲切的问候
    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2021-09-25
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多