Заголовок SOAPAction для исходящего сообщения с WebHttpBinding - PullRequest
0 голосов
/ 25 января 2019

Я пытался создать заголовок http, но каким-то образом wcf фильтрует его.

[ServiceContract()]
public interface IHelloWorld
{
    [OperationContract(Action = "*", IsOneWay = false, ReplyAction = "*")]
    void Hello(string text);
}

        var channel = new ChannelFactory<IHelloWorld>(new WebHttpBinding(), "http://some.where");
        channel.Endpoint.Behaviors.Add(new WebHttpBehavior());
        var proxy = channel.CreateChannel();
        using (OperationContextScope scope = new OperationContextScope((IContextChannel)proxy))
        {
            MessageProperties messageProperties = OperationContext.Current.OutgoingMessageProperties;

            var requestMessageProperty = new HttpRequestMessageProperty();
            messageProperties.Add(HttpRequestMessageProperty.Name, requestMessageProperty);

            requestMessageProperty.Headers.Add("SOAPAction", "test");
            requestMessageProperty.Headers.Add("Test", "test2");

            proxy.Hello("test");
        }

При тестировании этого кода заголовок Test находится в запросе, а SOAPAction - нет. Я пытался с IClientMessageInspector, но он тоже не работает. Я не могу использовать другую привязку (базовую или более выделенную для Soap).

1 Ответ

0 голосов
/ 28 января 2019

Насколько я знаю, поле SOAPAction является полем заголовка HTTP по умолчанию и используется для указания того, что метод действия вызывается, когда серверная служба использует привязку без webhttp.
Не думаю, что ее можно было бы произвольно указатьперехватывая сообщение / контекст операции.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...