2010-04-19 2 views
0

asp.net + ajax + httpmodule에 손을 잡고 있습니다.asp.net ajax + http 모듈이 실패합니다.

내 양식

<form id="LoginForm" runat="server"> 
<asp:ScriptManager ID="LoginScriptMgr" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="LoginPanel" runat="server"> 
    <ContentTemplate> 
     <asp:Label ID="lblLoginHeader" Text="Login" runat="server"></asp:Label> 
     <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
     <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox> 
     <asp:Button ID="btnLogin" Text="Login" runat="server" OnClick="Login" /> 
     <asp:Label ID="lblLoginStatus" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</form> 

C# 코드

protected void Login(object sender, EventArgs e) 
{ 
lblLoginStatus.Text = "Login Successful"; 
} 

의 Web.config

<httpModules> 
    <add name="TimeModule" type="MyWebPortal.App_Code.TimeModule,App_Code"/> 
</httpModules> 

HTTP 모듈

public class TimeModule : IHttpModule 
{ 
    private HttpApplication oApps = null; 
    public void Dispose() 
    { 
    } 
    public void Init(System.Web.HttpApplication context) 
    { 
     oApps = context; 
     context.PreSendRequestContent += new EventHandler 
     (context_PreSendRequestContent); 
    } 
    void context_PreSendRequestContent(object sender, EventArgs e) 
    { 
     string message = "&lt;!-- This page is being processed at " + System.DateTime.Now.ToString() + " -->"; 
     oApps.Context.Response.Output.Write(message); 
    } 
} 

난 내 아약스 작품의 Web.config에서 TimeModule를 제거합니다. TimeModule을 추가하면 레이블에 "Login Successful"메시지가 표시되지 않습니다.

ajax 패널을 제거하고 httpmodule을 사용할 수 있으면 레이블에 메시지가 표시됩니다. 그렇다면 아약스 패널이 httpmodules와 어떻게 연관되어 있었습니까?

답변

0

저는 문제는 모듈에서 보내는 것이 정상적인 응답 스트림을 방해한다는 것입니다. 이 스트림은 구조화되어 있습니다. 즉 헤더와 본문이 있습니다.

PostRequestHandlerExecute와 함께 덧글을 추가하십시오. 결과는 100 % 정확하지 않아야하지만 간섭해서는 안됩니다.

+0

줄 변경 : context.PostRequestHandlerExecute + = 새 EventHandler (context_PreRequestHandlerExecuteContent); 아직도 지금 o/p –

0

Login 메서드에 중단 점을 설정하면 중단 점에 충돌합니까?

+0

예. 그것은 브레이크 포인트를 때리지 만 업데이트 프로세스가 발생하지 않습니다. TimeModule을 추가하면 –

+0

응답에 HTML 주석을 쓰면 오류가 발생할 수 있습니다. 모듈을 거기에 보관하려고했지만 출력에 추가하는 행을 주석 처리 했습니까? – lasseeskildsen