WCF сервис с HttpContext
У меня был веб-сервис, который я преобразовал в сервис wcf с тем же расширением asmx. У меня есть basicHttpbinding, так как мой сервис общается с различными клиентами, такими как Java, Perl и т. Д.
У меня была проверка, в которой был HttpContext.Current. Но я знаю, что это не будет работать в сервисе wcf. Я пытаюсь использовать RequestContext или OperationContext, но не могу это сделать. Я пытался использовать
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
но не помогло. Я звоню в сервис из soapUI для тестирования.
2 ответа
Итак, я нашел решение. Есть довольно много способов получить контекст HttpContext.Current. Либо мы можем использовать OperationContext, либо мы можем использовать режим AspNetCompatibilityRequirements, для которого установлено значение Allowed, а для aspNetCompatibilityEnabled установлено значение true в web.config.
Для моего случая, когда я преобразовал службу asmx в службу wcf, мне также пришлось изменить обработчик HttpHandler, чтобы удалить и добавить путь asmx в System.ServiceModel.Activation.HttpHandler.
Вам лучше использовать OperationContext при использовании служб WCF. Как вы всегда получите HttpContext.Current.Items всегда Null, который работает только во время ASP.NET. Поэтому добавьте следующий код:-
OperationContext.Current.Extensions.Add(extension);