Запрос к услуге ASMX с WS-адресацией

У нас есть веб-сервис 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 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?

1 ответ

Мой плохой, я не сделал достаточного количества исследований об ASMX - он не поддерживает wsHttpBinding. Поэтому мы должны избавиться от него и создать WCF-сервис с конечной точкой wsHttpBinding.

Другие вопросы по тегам