2009-07-16 6 views
4

Je crée ma session nhibernate dans le gestionnaire d'événements PreRequestHandlerExecute de la classe HttpApplication.Événement PreRequestHandlerExecute non déclenché pour les appels REST

Cela fonctionne bien pour MVC, cependant, dans WCF (REST), l'événement n'est jamais déclenché.

Existe-t-il un moyen de faire en sorte que cela se produise ou toute autre meilleure idée pour définir la session à la fois dans MVC et WCF/Rest?

Merci à l'avance,

André Carlucci

Répondre

7

Je l'ai!

Je trouve la réponse dans cet article:

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

Lorsque vous utilisez WCF en mode mixte, le module intercepte la demande au début du stade de la canalisation: BeginRequest. Cela signifie les autres événements ne sont jamais appelés.

Pour résoudre ce problème, j'ai changé mon web.config pour faire fonctionner WCF en mode de compatibilité Asp.Net:

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

Et puis dire mon service explicitement compatible aussi:

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

Et c'est fait! Maintenant, j'ai tous les événements et aussi le HttpContext.Current au lieu de OperationContext.Current

J'espère que cela aide quelqu'un avec le même problème.

Cheers,

André Carlucci

+0

Bien sûr, l'alternative aurait été de faire la même chose que le "chemin WCF". La compatibilité avec ASP.NET a un coût. –

+0

Salut John, comment est le moyen de la WCF pour ouvrir la session hibernate et le mettre dans le OperationContext? Je veux dire, je n'ai que les événements BeginRequest/EndRequest et pas d'accès à OperationContext :( – andrecarlucci

Questions connexes