내가 지금처럼 내 global.ascx 파일에서 actionResult를 호출 오전에 스택 추적 정보를 보내기 메서드를 얻을 수 및 내 페이지에 스택 추적 정보를 표시 할 수 있도록 .... 전체 예외 개체를 따라 전달할 수 있습니까? 이것을 처리하는 가장 좋은 방법은 무엇입니까? 아니면 적절한 스택 추적 정보를 얻을 수있는 방법이 있습니까? 현재 예외 객체에 올바르게 채워진 속성입니다.내가하고 싶은 무엇</p> <pre><code>Response.Redirect(String.Format("~/Error/{0}/?message={1}", action, exception.Message)); </code></pre> <p>는 작업 결과에서 사용할 수있는 모든 예외 개체가입니다 ... 쿼리 문자열
답변
리디렉션하는 경우 복잡한 개체를 보낼 수 없습니다. 제 말은 Session
과 TempData
(세션 뒤에서 세션을 사용합니다)을 사용할 수 있다는 것입니다.하지만 추한 것과 내가 추천할만한 것입니다.
복잡한 개체를 원하는 경우 리디렉션하지 않습니다. 훨씬 더 편안하고 및 SEO 친화적 적절한 상태 코드 및 전송을 설정합니다 ErrorController은 다음과 같습니다
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
Context.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "error";
routeData.Values["action"] = "Http500";
routeData.Values["exception"] = exception;
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
: 당신은 당신이 복잡한 객체를 보낼 수 없습니다 리디렉션 경우
public class ErrorController : Controller
{
public ActionResult Http500(Exception exception)
{
Response.StatusCode = 500;
// TODO: do something with the exception like logging it
// and render some view explaining the annoyed user
// that something very wrong happened to your application
// which wasn't your fault of course or something
}
}
.
감사 ... 완벽한 작품 –
이렇게하는 것이 훨씬 더 좋은 방법은 TempData 컬렉션을 사용하는 것입니다.
TempData["myException"] = exception;
이것은 다음 요청에 대해서만 데이터 저장소 역할을합니다 (현재 클라이언트의 경우). 그러나 컨트롤러 내에서만 액세스 할 수 있으므로 컨트롤러 내에서 오류 처리가 발생하도록 코드를 재구성해야 할 수도 있습니다 (지금은 액세스 할 수없는 샘플 코드가 있지만 넣을 것입니다. 곧이 점이 더 잘 설명 될 것입니다.)
'TempData' 및 예외 처리를 위해 리디렉션 하시겠습니까? 302 500 대신 상태 코드? 매우 RESTful 또는 SEO 친화적 인 느낌이 들지 않습니다. –
내부 응용 프로그램 (내 경우) 인 경우 SEO는 부적합합니다. RESTful은 이상적인 목표입니다. 나는 너의 기술을 그러나 갈 것이다 줄 것이다! –
은 * 인트라넷 응용 프로그램 * 동의어 * 쓰레기 응용 프로그램 *? 내 인트라넷 응용 프로그램이라는 사실이 우리가 웹 표준을 존중해서는 안된다는 의미는 아닙니다. 결국, 그것은 웹 응용 프로그램입니다. 그렇지 않습니까? 따라서 웹 표준과 HTTP 사양을 존중하는 것이 모든 웹 응용 프로그램에서 중요한 부분으로 보입니다. 왜 인트라넷과 인터넷을 구별합니까? –
- 1. 연산자 << : std :: cout << i << (i << 1);
- 2. PHP <<<는 무슨 뜻입니까?
- 3. Heredoc <<< 또는 <<?
- 4. <<는 파이썬에서 무엇을합니까?
- 5. 는 <KeyValuePair는 <문자열 KeyValuePair <문자열, 문자열 >>>
- 6. 연산자 오버로딩 << 다음 코드에서 문자열
- 7. Bash 구문 : "<<"는 무엇입니까?
- 8. <table><table>는
- 9. 는 <xsl:if> & <xsl:when>
- 10. 조작 << 상속
- 11. 연산자 오버로드 <<
- 12. 는 <String>
- 13. Tortoise svn <<<<를 파일에 추가 중!
- 14. 인쇄 관련 질문 <<<
- 15. PHP <<< OUT 및 OUT;
- 16. <<< CON in PHP 사용
- 17. 맞춤 << 방법
- 18. 연산자 << 과부하
- 19. <? php와 <?
- 20. << - 상수는 무엇을합니까?
- 21. <? 및 <? php
- 22. 무엇을 | << 평균?
- 23. << 셀프 블록
- 24. Asp.net : <% # 또는 <%
- 25. '<< 연산자'표준의 :: 연산자 << 문자열 변환 연산자 클래스는 foobar
- 26. 목록 (<% 번호, <% = 등)
- 27. 오버로드 << 내 수업
- 28. float << 정수 부분과 부동 부분의 정밀도를 설정하여 작업
- 29. .Except <T>는 예외
- 30. Ostream << 과부화 혼란
당신의 tempdata에 넣을 수 있습니까? 보통 예외를 기록하고 로그를 사용하여 –
@Phil, 'TempData'를 디버깅하고 예외를 처리하도록 리디렉션합니까? 302 500 대신 상태 코드? 매우 RESTful 또는 SEO 친화적 인 느낌이 들지 않습니다. –