2012-07-26 3 views
2

내 애플 : VS2010, MVC3, C#을, 최신 ELMAHMVC3 + ELMAH가 오류 세부 정보로 이동합니까?

케이스 : 몇 가지 오류가 사용자 지정 오류 페이지가 (customErrors에 모드 = "On"으로) 표시됩니다 (예를 들어 null 참조) 발생합니다.

작업 : (역할 관리자의 사용자) 관리자 수있는 사용자 지정 오류 페이지에서보기 오류 세부

질문 : 어떻게/구하려면 사용자 지정 오류 페이지보기로 ELMAH 오류 ID를 전달하려면?

UPD : ELMAH - Using custom error pages to collecting user feedback

사용자 지정 오류 페이지 샘플 : 관련이 질문에 대답 나는 모든 ELMAH 오류가 EMAH_Error라는 테이블에 저장됩니다 알고에서

@model System.Web.Mvc.HandleErrorInfo 
@{ 
    ViewBag.Title = "Error"; 
} 
<h2> 
    Error processing a request. 
    @if (User.IsInRole(MyAppNamespace.Constants.ROLE_ADMIN)) 
    { 
    // where to obtain ELMAH error id to navigate to error details ? 
    // elmah/detail?id=291f5e83-5756-43bf-a889-07a548727da7 
    <a href="@Url.Content("~/elmah")">View error details</a> 
    } 
</h2> 
+0

elmah 오류 페이지에 링크하는 대신'@ Model.Exception.ToString()'을 표시하는 것이 더 쉬울 것입니다. Elmah는 환경에 대한 많은 정보를 추가합니다. 그러나 오류가 발생할 때이를보고 있다면 필자는 필자의 필요성을 확신하지 못합니다. – jrummell

답변

2

: 나는 Elmah.Mvc 모듈을

protected void ErrorLog_Logged(object sender, ErrorLoggedEventArgs args) 
{ 
    Session["ElmahId"] = args.Entry.Id; 
} 

그런 다음 우리가 에러 이동 저장 ID를 사용할 수 있습니다 (사용하고 그 기본 elmah 페이지 대신 특수 컨트롤러를 구현합니다. Error.cshtml에서 :

@if (User.IsInRole(renweb.Constants.ROLE_ADMIN)) 
{ 
     <a href="@Url.Action("Detail","Elmah",new{[email protected]["ElmahId"]})">Error details</a> 
} 
0

.

그래서 한 가지해야 할 일은 오류가 발생했을 때 현재 날짜 시간을 얻고 그 시간에 저장/저장되는 레코드를 테이블에 쿼리하여 1 분 정도 걸리는 것입니다. 쿼리는 ErrorId를 포함하는 해당 타임 스탬프와 함께 저장된 오류를 반환합니다.

EF 또는 다른 것을 사용하여 쉽게 ElmahError를 생성 할 수 있습니다.

이 Global.asax.cs에서 처리 할 수 ​​ELMAH 오류 로그 모듈의 이벤트입니다