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);
Другие вопросы по тегам