我正在HttpApplication类的PreRequestHandlerExecute事件处理程序中创建我的nhibernate会话。
它适用于MVC,但是,在WCF(REST)中,事件永远不会被触发。
有没有办法让它成为现实或者在MVC和WCF / Rest中设置会话的任何其他好主意?
提前致谢,
AndréCarlucci
答案 0 :(得分:7)
我明白了!
我在这篇文章中找到了答案:
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
我希望这可以帮助有同样问题的人。
干杯,
AndréCarlucci