2013-06-13 2 views
0

을 작동하지 않습니다 나는 다음과 같은 C# 코드를 가지고 :Reponse.Redirect 즉시 C#

string ProfileID, UserID; 
try 
{ 
    ProfileID = Request.QueryString["ProfileID"].ToString(); 
    string SelectQuery; 
    DataSet ds; 
    try 
    { 
     UserID = Session["UserID"].ToString(); 
     if (ProfileID == UserID) 
     { 
      Response.Redirect("user/Default.aspx", true); 
      return; 
     } 
     else 
     { 
      //some code here 
     } 
    } 
    finally 
    { 

     //some code here 

    } 
} 
catch { 
    Response.Redirect("DoesNotExists.aspx"); 
} 

여기서 문제는 그 조건은 대신 리디렉션이에 사실 (if (ProfileID == UserID)), 코드 cotinue 실행하고있는 경우 라인 : Response.Redirect("user/Default.aspx", true); redicet이 줄에 : Response.Redirect("DoesNotExists.aspx");

내 질문은 어떻게 고칠 수 있습니다.

도움을 청하십시오! 감사합니다.

+2

실제 예외를 캡처 할 수 있습니까? 'catch (Exception ex)'는 모든 예외를 잡아서 무엇이 잘못되었는지 알려줍니다. –

+0

감사합니다. 그러나 다른 해결책이 있습니까? –

답변

2

ThreadAbortedException이 던져 졌으므로 Try-Catch에서 리디렉션 할 수 없습니다. 그렇게하려면 falseResponse.Redirect으로 전달해야합니다.

부울 현재 페이지의 실행이 종료되어야하는지 여부를 나타냅니다.

따라서 리디렉션 위치를 저장하고 try-catch 후에 리디렉션하거나 Response.Redirect(url, false)을 사용하십시오.

string ProfileID, UserID, redirectUrl; 
try 
{ 
    ProfileID = Request.QueryString["ProfileID"].ToString(); 
    string SelectQuery; 
    DataSet ds; 
    try 
    { 
     UserID = Session["UserID"].ToString(); 
     if (ProfileID == UserID) 
     { 
      redirectUrl = "user/Default.aspx"; 
     } 
     else 
     { 
      //some code here 
     } 
    } 
    finally 
    { 

     //some code here 
    } 
} 
catch 
{ 
    redirectUrl = "DoesNotExists.aspx"; 
} 

if(!string.IsNullOrEmpty(redirectUrl)) 
    Response.Redirect(redirectUrl); 
+1

그냥 내 휴대 전화 에서이 질문을 잡았 내 노트북에 그렇게 거의 정확히 게시 할 부팅. –

+0

고마워,하지만 지금 코드가 catch (Response.Redirect ("DoesNotExists.aspx");)에있을 때 "HTTP 헤더를 보낸 후 리디렉션 할 수 없습니다."라는 오류 메시지가 표시됩니다. 왜 그렇습니까? –

+0

@NaveTseva :'// some code here'에서 뭐하고 있니? 그것은 당신이 HttpResponse에 쓰고있는 것 같습니다. 정상적으로'Response.Write'를 사용하면 안됩니다. –