Служба WCF с HttpContext

У меня была веб-служба, которую я преобразовал в службу wcf с тем же расширением asmx. У меня есть basicHttpbinding, поскольку моя служба общается с различными клиентами, такими как java, perl и т. Д.

У меня была проверка, в которой был HttpContext.Current. Но я знаю, что в сервисе wcf это не сработает. Я пытаюсь использовать RequestContext или OperationContext, но не могу. Я пытался использовать

[ServiceBehavior (InstanceContextMode = InstanceContextMode.PerSession)]

но не помогло. Звоню в свой сервис из soapUI для тестирования.


person Ashish    schedule 07.08.2010    source источник


Ответы (2)


Хорошо, я нашел решение. Есть несколько способов получить контекст HttpContext.Current. Либо мы можем использовать OperationContext, либо мы можем использовать режим AspNetCompatibilityRequirements, установленный на Allowed, и aspNetCompatibilityEnabled, установленный на true в web.config.

В моем случае, когда я преобразовал службу asmx в службу wcf, мне также пришлось изменить обработчик HttpHandler, чтобы удалить и добавить путь asmx к System.ServiceModel.Activation.HttpHandler.

person Ashish    schedule 07.08.2010

Лучше использовать OperationContext при использовании служб WCF. Поскольку вы всегда будете получать HttpContext.Current.Items, всегда имеет значение Null, которое выполняется только в то время, когда ASP.NET. Итак, добавьте следующий код: -

OperationContext.Current.Extensions.Add(extension);
person sandip    schedule 21.04.2011