我们有一个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" />
我怀疑它必须与绑定做一些事情,但这是Service Reference
在 Visual Studio 中添加时自动生成的东西——为什么它是这样生成的呢?也许我需要在 ASMX 服务方面进行一些更改?