Событие PreRequestHandlerExecute не сработало для вызовов REST - PullRequest
4 голосов
/ 16 июля 2009

Я создаю сеанс nhibernate в обработчике событий PreRequestHandlerExecute класса HttpApplication.

Это прекрасно работает для MVC, однако, когда в WCF (REST) ​​событие никогда не запускается.

Есть ли способ сделать это или какая-нибудь другая лучшая идея установить сеанс как в MVC, так и в WCF / Rest?

Заранее спасибо,

Андре Карлуччи

1 Ответ

7 голосов
/ 16 июля 2009

Я понял!

Я нашел ответ в этой статье:

http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx

При использовании WCF в смешанном режиме модуль перехватывает запрос на ранней стадии конвейера: BeginRequest . Это означает, что другие события никогда не называются .

Чтобы исправить это, я изменил свой web.config, чтобы WCF работал в режиме совместимости с Asp.Net:

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

А потом точно скажите, что мой сервис тоже совместим:

[AspNetCompatibilityRequirements(RequirementsMode = 
AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService { ...

И готово! Теперь у меня есть все события, а также HttpContext.Current вместо OperationContext.Current

Надеюсь, это поможет кому-то с такой же проблемой.

Приветствия

Андре Карлуччи

...