코드가 최적화되었거나 네이티브 프레임이 호출 스택의 맨 위에 있으므로 식을 계산할 수 없습니다.
오류가 발생했습니다.
코드가 최적화되었거나 네이티브 프레임이 호출 스택의 맨 위에 있으므로 식을 계산할 수 없습니다.
리피터의 아이템 명령 이벤트에서 새 페이지로 리디렉션했습니다.다음 행에서 오류가 발생합니다.
string url = "~/Galleries/AlbumImageList.aspx?UId=" + this.UserId.ToString() + "&AlbumId=" + e.CommandArgument.ToString();
Response.Redirect(url);
누가 저를 도와주실 수 있나요?거기에 무슨 문제라도 있습니까? 그_COMPlusExceptionCode-입니다.532459699.
Request.Redirect(url,false);
false현재 페이지의 실행을 종료할지 여부를 나타냅니다.
다과같 주펼다니칩을 두 주장을 .Response 아래와 같이 거짓입니다.
Response.Redirect(url,false);
결의안
이 문제를 해결하려면 다음 방법 중 하나를 사용합니다.
응답용.끝으로 HttpContext를 호출합니다.현재.응용 프로그램인스턴스.응답 대신 요청() 메서드를 완료합니다.End - 코드 실행을 Application_EndRequest 이벤트로 우회합니다.
응답용.리디렉션, 오버로드 사용, 응답.응답에 대한 내부 호출을 억제하기 위해 endResponse 매개 변수에 대해 false를 전달하는 리디렉션(Stringurl, boolendResponse).끝. 예:
Response.Redirect ("nextpage.aspx", false);이 해결 방법을 사용할 경우 응답을 따르는 코드입니다.리디렉션이 실행됩니다.
증상
응답을 사용하는 경우.끝, 응답.리디렉션 또는 서버.전송 메서드, ThreadAbortException 예외가 발생합니다.Try-catch 문을 사용하여 이 예외를 탐지할 수 있습니다.
원인
응답.End 메서드는 페이지 실행을 종료하고 응용 프로그램의 이벤트 파이프라인에 있는 Application_EndRequest 이벤트로 실행을 이동합니다.반응을 따르는 코드 행입니다.종료가 실행되지 않았습니다.
이 문제는 응답에서 발생합니다.리디렉션 및 서버.두 메서드 모두 응답을 호출하므로 메서드를 전송합니다.내부적으로 끝납니다.
상황
이 동작은 의도적으로 수행됩니다.
특성.
문서 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
키워드: kbexceptthing kbprb KB312629
출처: PRB: 응답을 사용하는 경우 스레드 중단 예외가 발생합니다.끝, 응답.리디렉션 또는 서버.갈아타다
제가 조사하던 버그에서 응답이 있었습니다.리디렉션()이 예기치 않은 위치에서 실행되었습니다(읽기: 부적절한 위치 - 멤버 속성 getter 메서드 내부).
문제를 디버깅할 때 "식을 평가할 수 없습니다...예외:
- 에 대한 검색을 합니다.
Response.Redirect()두 번째 매개 변수 endResponse = false로 만들거나, - 리디렉션 호출을 일시적으로 비활성화합니다.
디버거의 "스텝 스루"가 해당 위치에 도달하기 전에 리디렉션 호출을 실행하는 것처럼 보이기 때문에 이 작업은 좌절되었습니다.
이 문제의 원인과 오류 해결 방법은 다음 링크를 확인하십시오.
http://support.microsoft.com/kb/312629/EN-US/
Microsoft 지원 문서:
PRB: 응답을 사용하는 경우 스레드 중단 예외가 발생합니다.끝, 응답.리디렉션 또는 서버.인쇄 전송 인쇄 전자 메일
이 문제를 해결하려면 다음 방법 중 하나를 사용합니다.응답용.끝으로 HttpContext를 호출합니다.현재의.어플사례.응답 대신 요청 메서드를 완료합니다.End - 코드 실행을 Application_EndRequest 이벤트로 우회합니다.
응답용.리디렉션, 오버로드 사용, 응답.응답에 대한 내부 호출을 억제하기 위해 endResponse 매개 변수에 대해 false를 전달하는 리디렉션(Stringurl, boolendResponse).끝.
예를 들어, 응답입니다.리디렉션("nextpage.aspx", false);
이 해결 방법을 사용할 경우 응답을 따르는 코드입니다.리디렉션이 실행됩니다.서버용.전송, 서버를 사용합니다.대신 메서드를 실행합니다.
저도 같은 문제가 있었고, 까다로웠습니다.저는 Ext를 사용하고 있기 때문입니다.Jsjavascript 라이브러리입니다.Ajax 호출에서 액세스한 서버 측 코드에서 response.redirect를 수행하는 경우 문제가 발생합니다.Ext.js에는 Ext에 대한 해결 방법이 있습니다.리디렉션 방법.
이 코드를 사용하여 문제를 해결합니다.
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();
}
사용할 수도 있습니다.
다른 사람이 제가 한 문제에 부딪혔을 때를 대비해서 저는 응답을 사용하고 있습니다.비동기 트리거 버튼 종료()
<asp:AsyncPostBackTrigger ControlID="btn_login" />
업데이트 패널에 있습니다.저는 최고는 아니지만 일반 우편으로 전환했지만 효과가 있었습니다.
<asp:PostBackTrigger ControlID="btn_login" />.
제가 페이지에서 방향을 수정하는 것뿐이었기 때문에 이것은 실행 가능한 해결책이었습니다.
업데이트 패널 및 링크 버튼을 사용하여 엑셀을 다운로드하는 경우 포스트백 트리거를 추가하는 것보다 패널 내부에 있습니다.
<asp:PostBackTrigger ControlID="lnkTemplate" />
그리고 코드 뒤에 있는 내부 클릭 이벤트에서
string ServerPath = System.Configuration.ConfigurationManager.AppSettings["FilePath"] + "Template.xlsx";
System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(ServerPath));
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.TransmitFile(file.FullName);
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
이것을 사용하세요, 항상 저에게 효과가 있습니다.
Response.Redirect(Request.RawUrl, false);
여기, 응답.리디렉션(요청).RawUrl)은 현재 컨텍스트의 URL로 리디렉션하는 반면, 두 번째 매개 변수 "false"는 endResponse 여부를 나타냅니다.
이 문제는 검증 규칙이 있는 모델에서 mvc에 면도기 페이지가 있을 때 발생할 수 있습니다.양식에서 게시할 때 일부 필드에 유효성 검사 오류를 표시하는 것을 잊으면 이 메시지가 나타날 수 있습니다.추측: 게시하는 방법이 다르고 다른 소스에서 사용하거나 원래 요청을 처리하는 방법과 다른 위치에 있는 경우일 수 있습니다.
따라서 서로 다르기 때문에 원래 페이지로 돌아가 실행 및 모델 상태가 동일하지 않기 때문에 오류를 표시하거나 처리할 수 없습니다.
발견하기는 약간 어려울 수 있지만 실수하기는 쉽습니다.수신 방법이 게시할 수 있는 모든 방법을 실제로 확인하는지 확인합니다.
예를 들어, 서버 측 유효성 검사를 통해 유효성 검사에서 허용된 최대값보다 큰 문자열을 실제로 작성할 수 없는 경우에도 수신 메서드에 게시하는 다른 방법과 소스가 있을 수 있습니다.
언급URL : https://stackoverflow.com/questions/2041482/unable-to-evaluate-expression-because-the-code-is-optimized-or-a-native-frame-is
'programing' 카테고리의 다른 글
| 그 방법이 Moq에서 호출되지 않았는지 어떻게 확인합니까? (0) | 2023.05.24 |
|---|---|
| UI Navigation Controller의 뒤로 막대 단추를 누를 때 작업 실행 (0) | 2023.05.20 |
| VBA 매크로에서 기호 #(해시) 사용 (0) | 2023.05.20 |
| DataRow: 지정된 열 이름으로 셀 값 선택 (0) | 2023.05.20 |
| jQuery removeClass 와일드카드 (0) | 2023.05.20 |