使用WS-Addressing请求ASMX服务

时间:2015-12-24 18:51:52

标签: c# asmx ws-addressing

我们有 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服务方面改变一些东西?

1 个答案:

答案 0 :(得分:0)

我的不好,我还没有对ASMX做过足够的研究 - 它不支持 wsHttpBinding 。所以我们应该摆脱它并使用wsHttpBinding端点创建一个WCF服务。