【问题标题】:BeginRequest event not fired in my httpmoduleBeginRequest 事件未在我的 httpmodule 中触发
【发布时间】:2011-02-28 12:04:26
【问题描述】:

我有一个 httpmodule,但自从迁移应用程序 .NET 4 以来,我遇到了一些奇怪的行为。 BeginRequest 事件不会在某些请求上触发(但它会在其他请求上触发) - 我还没有设法弄清楚它什么时候触发和没有触发的模式。

EndRequest 事件似乎总是被触发。

我找到了这篇文章: http://connect.microsoft.com/VisualStudio/feedback/details/535999/beginrequest-event-is-not-raised-in-my-http-module-on-iis7

但来自微软的唯一建议似乎是需要在 system.webServer/modules 部分中输入一个条目 - 我已经准备好了。

我对 .net 和 mvc 还很陌生 - 有人对我如何追查此问题的原因有任何建议吗?

非常感谢任何帮助/建议。

【问题讨论】:

  • 初始化代码真的运行了吗?

标签: c# .net events asp.net-mvc-3 httpmodule


【解决方案1】:

我花了很长时间试图破解为什么它并不总是触发!这是答案: 您需要一个围绕被调用请求的更新面板。因此,例如,如果您有一个按钮需要调用开始和结束请求处理程序,那么您可以在按钮周围放置一个 Ajax 更新面板并将“UpdateMode”设置为“Always”。这是因为这些 javascript 事件仅在异步回发之前和之后触发。 Ajax 更新面板将提供异步调用。

例子:

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        //Some code
    }
    function EndRequestHandler(sender, args) {
        //Some code
    }
</script>

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" ID="UpdatePanel6" UpdateMode="Always">
    <ContentTemplate>
        <asp:Button runat="server" ID="btnGo" Text="Go" OnClick="btnGo_OnClick"/>    
    </ContentTemplate>
</asp:UpdatePanel>

请注意,这是 asp.net 中的正确方法。我不太确定MVC。希望对您有所帮助。

【讨论】:

  • 请问cs文件中的'btnGo_OnClick'方法是什么样的?
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 2017-06-27
  • 1970-01-01
  • 2011-02-27
相关资源
最近更新 更多