2011-02-28 10 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