Заголовки HTTP WCF с использованием HttpRequestMessageProperty и OperationContextScope - PullRequest
3 голосов
/ 23 августа 2011

Я понимаю, что это вопрос, который задавали снова и снова, но я не могу найти список "ошибок", на которые я могу взглянуть.

Я пишу клиент WCF, который будет использовать веб-сервис SAP, используя customBinding в моем web.config с параметром allowCookies, установленным в false, и поддержкой надежных сеансов. Я устанавливаю свои HTTP-заголовки следующим образом:

var authCookie = new System.Net.Cookie();
var wcfClient = new SomeWcfClient();
using (var context = new OperationContextScope(wcfClient.InnerChannel))
{
    var cookies = new CookieContainer();
    cookies.Add(authCookie);
    var endPoint = new EndpointAddress("http://someDomain.test/");

    var httpRequest = new System.ServiceModel.Channels.HttpRequestMessageProperty();
    OperationContext.Current.OutgoingMessageProperties.Add(System.ServiceModel.Channels.HttpRequestMessageProperty.Name, httpRequest);
    httpRequest.Headers.Add(HttpRequestHeader.Cookie, cookies.GetCookieHeader(endPoint.Uri));

    wcfClient.PerformOperation();
}

Когда я использую Fiddler, мой HTTP-заголовок не встречается. Я также пытался создать фиктивные заголовки Referer и User-Agent, думая, что, возможно, что-то конкретное происходило с моим заголовком cookie, но даже эти другие заголовки не встречались. Какие-нибудь мысли? Где мне искать дальше?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Итак, этот вопрос сильно отличался от того, что мы ожидали. Я все еще пытаюсь найти решение, но, по крайней мере, я знаю причину:

Я не могу отправить куки HTTP для аутентификации моих запросов; наши сервисы SAP используют токен MYSAPSSO2 (HTTP cookie) для аутентификации. При попытке использовать WCF для подключения к веб-службе SAP с поддержкой надежного сеанса наши файлы cookie не отправляются заранее.

Мы ищем способ создания собственного провайдера аутентификации, который может использовать файлы cookie HTTP.

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