【问题标题】:Request to ASMX service with WS-Addressing使用 WS-Addressing 向 ASMX 服务请求
【发布时间】:2015-12-24 18:51:52
【问题描述】:

我们有一个 ASMX 网络服务。我知道,它已经过时了,但我们必须保留它。因此,我有一个客户端应用程序向该服务的方法发送请求(带有 WS-Addressing 标头):

someASMX.someSoapClient client = new someASMX.someSoapClient();
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
    OperationContext.Current.OutgoingMessageHeaders.ReplyTo = new EndpointAddress("https://address2answer");
    OperationContext.Current.OutgoingMessageHeaders.MessageId = new System.Xml.UniqueId(Guid.NewGuid());
    client.someMethod("1", "test");
}

但请求失败并出现以下异常:

Addressing Version 'AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)' does not support adding WS-Addressing headers

那么 ASMX Web 服务是否支持 WS-Addressing?如果他们这样做了,我应该怎么做才能让它接受带有 WS-Addressing 标头的请求?

我在客户端的app.config中有如下绑定:

<basicHttpBinding>
  <binding name="someSoap">
    <security mode="Transport" />
  </binding>
</basicHttpBinding>

<endpoint address="https://someserver:443/some.asmx"
    binding="basicHttpBinding" bindingConfiguration="someSoap"
    contract="someNS.someSoap" name="someSoap" />

我怀疑它必须与绑定有关,但这是在 Visual Studio 中添加 Service Reference 后自动生成的东西 - 为什么会这样生成呢?也许我需要在 ASMX 服务方面进行一些更改?

【问题讨论】:

    标签: c# asmx ws-addressing


    【解决方案1】:

    糟糕的是,我对 ASMX 的研究还不够——它不支持 wsHttpBinding。所以我们应该摆脱它并使用 wsHttpBinding 端点创建一个 WCF 服务。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2022-07-26
      • 1970-01-01
      相关资源
      最近更新 更多