【问题标题】:PreRequestHandlerExecute event not fired for REST callsREST 调用未触发 PreRequestHandlerExecute 事件
【发布时间】:2009-07-16 14:53:00
【问题描述】:

我正在 HttpApplication 类的 PreRequestHandlerExecute 事件处理程序中创建我的休眠会话。

它适用于 MVC,但是,在 WCF (REST) 中,该事件永远不会被触发。

有没有办法让它发生或任何其他更好的想法在 MVC 和 WCF/Rest 中设置会话?

提前致谢,

安德烈·卡鲁奇

【问题讨论】:

    标签: c# wcf global-asax


    【解决方案1】:

    我明白了!

    我在这篇文章中找到了答案:

    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

    我希望这可以帮助遇到同样问题的人。

    干杯,

    安德烈·卡鲁奇

    【讨论】:

    • 当然,替代方案是按照“WCF 方式”做同样的事情。与 ASP.NET 兼容是有代价的。
    • 嗨,John,WCF 如何打开休眠会话并将其放入 OperationContext 中?我的意思是,我只有 BeginRequest/EndRequest 事件,无法访问 OperationContext :(
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多