2011-02-28 82 views
2

我有一个httpmodule,但是由于迁移应用程序.NET 4时遇到了一些问题。 BeginRequest事件在某些请求中没有被触发(但是它在其他请求上触发) - 我还没有设法找出它到底是什么时候并且没有被触发的模式。BeginRequest事件没有在我的httpmodule中触发

EndRequest事件似乎总是被解雇。

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

,但来自微软的唯一的建议似乎是一个条目需要在system.webServer /模块部分进行 - 我已经到位。

我是很新的.NET和MVC - 没有任何人有任何建议,我怎么会追查这个问题的原因是什么?

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

+0

init代码是否实际运行? – CodingBarfield 2011-02-28 12:50:59

回答

3

我花了相当一段时间试图破解为什么它并不总是火!答案如下: 您需要一个围绕被调用请求的更新面板。因此,如果您有一个需要调用begin和end请求处理程序的按钮,则可以在按钮周围放置一个Ajax更新面板,并将“UpdateMode”设置为“Always”。这是因为这些javascript事件只在asynchronos回发之前和之后触发。 Ajax更新面板将提供asynchronos调用。

例子:

<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。希望有所帮助。

+0

'btnGo_OnClick'方法在cs文件中看起来像什么? – 2014-04-10 17:50:44