오류가 발생합니다.
코드가 최적화되었거나 기본 프레임이 호출 스택의 맨 위에 있으므로 표현식을 평가할 수 없습니다.
리피터의 itemcommand 이벤트에서 새 페이지로 리디렉션되었습니다. 라인에서 오류가 발생합니다.
string url = "~/Galleries/AlbumImageList.aspx?UId=" + this.UserId.ToString() + "&AlbumId=" + e.CommandArgument.ToString();
Response.Redirect(url);
누구든지 제발 도와주세요? 거기에 문제가 있습니까? 은 _COMPlusExceptionCode
이다 – 532459699
.
답변
Request.Redirect(url,false);
false
현재 페이지의 실행을 종료해야하는지 여부를 나타냅니다.
답변
아래와 같이 Response
false의 두 번째 인수를 작성하십시오 .
Response.Redirect(url,false);
답변
해결
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
내용 으로 Response.End 호출 HttpContext.Current.ApplicationInstance.CompleteRequest ()
가 아닌 방법 으로 Response.End을 받는 코드 실행을 우회
의 Application_EndRequest의 이벤트.들어 Response.Redirect를 , 과부하, 사용 Response.Redirect를 (문자열 URL, 부울 endResponse) 전달 거짓 에 대한 endResponse의 에 내부 호출 억제하는 매개 변수 으로 Response.End를 . 예를
Response.Redirect
들어이 해결 방법을 사용하면 Response.Redirect 다음에 오는 코드가 실행됩니다.
("nextpage.aspx", false);들어 Server.Transfer를 , 사용하는 경우 Server.Execute 메서드를 대신.
조짐
Response.End, Response.Redirect 또는 Server.Transfer 메소드를 사용하는 경우 ThreadAbortException 예외가 발생합니다. try-catch 문을 사용하여이 예외를 포착 할 수 있습니다.
원인
Response.End 메소드는 페이지 실행을 종료하고 실행을 애플리케이션의 이벤트 파이프 라인에서 Application_EndRequest 이벤트로 이동합니다. Response.End 다음에 오는 코드 줄은 실행되지 않습니다.
이 문제는 두 메서드가 모두 내부적으로 Response.End를 호출하기 때문에 Response.Redirect 및 Server.Transfer 메서드에서 발생합니다.
상태
이것은 의도적으로 설계된 동작입니다.
속성
기사 ID : 312629-최종 검토 : 2012 년 8 월 30 일-개정 : 4.0
적용
- Microsoft ASP.NET 4.5
- Microsoft ASP.NET 4
- Microsoft ASP.NET 3.5
- Microsoft ASP.NET 2.0
- Microsoft ASP.NET 1.1
- Microsoft ASP.NET 1.0
키워드 : kbexceptling kbprb KB312629
출처 : PRB : Response.End, Response.Redirect 또는 Server.Transfer를 사용하면 ThreadAbortException이 발생합니다.
답변
내가 조사하고있는 버그에는 Response.Redirect ()가 있었고 예상치 않은 위치 에서 실행 중이었습니다 ( 읽기 : 부적절한 위치-멤버 속성 getter 메소드 내부 ).
문제를 디버깅 중이고 ” 표현식을 평가할 수 없습니다 … “예외가 발생하는 경우 :
- 검색을 수행
Response.Redirect()
하고 두 번째 매개 변수를 endResponse = false로 설정하십시오 . 또는 - 재전송 호출을 일시적으로 비활성화합니다 .
디버거의 “스텝 스루”가 해당 위치에 도달하기 전에 리디렉션 호출 을 실행하는 것처럼 보이기 때문에 실망 스러웠습니다.
답변
이 문제의 원인과 오류에 대한 해결책은이 링크를 확인하십시오.
http://support.microsoft.com/kb/312629/EN-US/
Microsoft 지원 기사 :
PRB : Response.End, Response.Redirect 또는 Server.Transfer 인쇄 인쇄 전자 메일 전자 메일을 사용하면 ThreadAbortException이 발생한다
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오. Response.End의 경우 코드 실행을 Application_EndRequest 이벤트로 무시하려면 Response.End 대신 HttpContext.Current.ApplicationInstance.CompleteRequest 메서드를 호출하십시오.
Response.Redirect의 경우 endResponse 매개 변수에 대해 false를 전달하여 Response.End에 대한 내부 호출을 억제하는 과부하 Response.Redirect (String url, bool endResponse)를 사용하십시오.
예를 들면 다음과 같습니다. Response.Redirect ( “nextpage.aspx”, false);
이 해결 방법을 사용하면 Response.Redirect 다음에 오는 코드가 실행됩니다. Server.Transfer의 경우 Server.Execute 메서드를 대신 사용하십시오.
답변
나는이 같은 문제가 있었고 까다로웠다. 저에게는 Ext.Js 자바 스크립트 라이브러리를 사용하고 있기 때문입니다. Ajax 호출에서 액세스 한 서버 측 코드에서 response.redirect를 수행하는 경우 문제가 있습니다. Ext.js는 Ext.Redirect 방법에 대한 해결 방법이 있습니다.
답변
이 코드를 사용하여 문제를 해결하십시오.
string path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "Uploadfile\\" + fileName;
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] bt = new byte[fs.Length];
fs.Read(bt, 0, (int)fs.Length);
fs.Close();
Response.ContentType = "application/x-unknown/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName;+ "\"");
try
{
if (bt != null)
{
System.IO.MemoryStream stream1 = new System.IO.MemoryStream(bt, true);
stream1.Write(bt, 0, bt.Length);
Response.BinaryWrite(bt);
//Response.OutputStream.Write(bt, 0, (int)stream1.Length);
Response.Flush();
// Response.End();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
throw ex;
}
finally
{
Response.End();
}