시나리오
I는 (등 폼/윈도우 인증을 사용하여 대) 지정 인증/인증 방법을 사용하는 ASP.NET 프로젝트가있다. 각 보안 페이지로드에서 다음 코드가 실행됩니다비동기 포스트 백 중에 브라우저를 리디렉션하는 방법은 무엇입니까?
protected void Page_Load(Object sender, EventArgs e)
{
if (!IsLoggedIn)
{
HttpContext.Current.Response.Redirect("~/Login/", true);
}
}
이 코드는 기본적으로 사용자가 (등, 로그 아웃하지 만료 된 ASP.NET 세션)에 로그인 여전히 여부를 확인; 사용자가 로그인하지 않은 경우 Response.Redirect()
이 발생하여 로그인 페이지로 전송됩니다.
이 시나리오 은 사용자가 전체 페이지 (링크 또는 직접 URL을 통해)를 요청하면 완벽하게으로 작동합니다. 비동기 포스트 백을 사용할 때 문제가 발생합니다.
클릭하면 비동기 포스트 백이 발생하는 <asp:UpdatePanel>
내부에 버튼이 중첩되어 있습니다. 이 버튼은 <asp:Label />
을 업데이트합니다. 예를 들면 :
<!-- the button -->
<asp:LinkButton ID="MyButton" CausesValidation="false" Text="My Button" OnClick="MyButton_Click" runat="server" />
<!-- the label -->
<asp:Label ID="MyLabel" runat="server" />
protected void MyButton_Click(Object sender, EventArgs e)
{
MyLabel.Text = DateTime.Now.ToString();
}
문제 비동기 포스트 백이 실행
및 IsLoggedIn
거짓, 요청이 로그인 페이지로를 재 입니다. 이제 ASP.NET 프레임 워크는 HTML 페이지가 아닌 특정 응답을 기대합니다. 따라서, 다음과 같은 오류를 던지고 :
이
가 어떻게이 문제를 해결할 수
질문? 비동기 포스트 백 동안 코드 숨김에서 특정 주소로 전체 페이지 리디렉션을 강제 적용하려면 어떻게합니까?
당신의 대답이 원하는 결과를 얻기위한 가장 적절한 * 방법이지만, 나는 그보다 조금 더 ** 더 ** 필요합니다. ** 현재 상태에서 페이지 라이프 사이클을 방해해야한다. (Response.Redirect ("path", true)와 같다). 이 추가 세부 정보를 제공하는 추가 답변을 게시했습니다. – Jesse