2013-12-13 3 views
1

MVC를 사용하지 않는 ASP.NET WEB API 2 프로젝트에서 Elmah 오류 로깅을 구현하려고합니다.Elmah in MVC .Net 4.5.1

나는 Elmah와 Elmah.mvc nuget 패키지를 모두 시험해 보았고 두 가지 모두를 사용하여 emlah 페이지를 탐색 할 수도조차하지 못했습니다.

elmah는 ASP.NET WEB API 2에서 지원됩니까?

추신. 나는 심지어 로깅 errors.I를 시작 havent 그냥 페이지 (elmah에 elmah.axd 또는 elmah.melc에서/elmah)를 탐색하려고하고 그것은 액세스 할 수 없습니다.

편집 : 블로그에 언급 된 방법을 구현하려고합니다. 패키지가 추가 된 후

http://blogs.msdn.com/b/webdev/archive/2012/11/16/capturing-unhandled-exceptions-in-asp-net-web-api-s-with-elmah.aspx

는에 따르면, elmah.axd 페이지 accesible를 잘해야한다. 그러나 그것은 나를 위해 일하지 않습니다.

업데이트 : 오류 로깅 잘 작동합니다. 유일한 문제는 브라우저에서 오류 로그를 볼 수 없다는 것입니다.

답변

2

웹 API가 HttpContext를 사용하지 않기 때문에 Elmah는 현재 웹 API에서 지원되지 않습니다. IIS에서 웹 API를 호스팅하는 경우 호스팅 ASP.NET 런타임에서 제공되는 HttpContext에 액세스 할 수 있습니다.

어떤 호스트를 사용하고 있습니까? IIS/ASP.NET 런타임이 아닌 경우 Elmah를 사용할 수 없습니다.

+0

감사 Darrel, 나는 IIS를 사용하고 있습니다. 호스팅 런타임 사용에 대한 링크를 제공 할 수 있습니까? – shajumohamed

6

내 웹 API가 'api'경로 대신 루트 URL에서 실행되도록 구성되어 있기 때문에이 문제가 발생했습니다. mydomain.com/api 대신 api.mydomain.com입니다.

protected void Application_Start() 
{ 
    RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}"); 

    GlobalConfiguration.Configure(WebApiConfig.Register); 
} 

참고 :이 /elmah.axd 경로가 웹 API를 경로로 잡혀 나는이 내 Global.asax 파일의 경로를 무시를 해결하려면 404 오류를 No type was found that matches the controller named 'elmah.axd'

를 반환되는 원인 : config.Routes.IgnoreRoute(...)을 사용하여 WebApiConfig 라우트 섹션의 경로를 무시하면 위와 같이 RouteTable.Routes.Ignore(...)을 사용하여 완료해야합니다. http://www.jasonwatmore.com/post/2014/05/03/Getting-ELMAH-to-catch-ALL-unhandled-exceptions-in-Web-API-21.aspx

+0

"config.Routes.IgnoreRoute (...)를 사용하여 WebApiConfig 라우트 섹션의 라우트를 무시하면 작동하지 않으므로 위와 같이 RouteTable.Routes.Ignore (...)를 사용하여 완료해야합니다." 고맙습니다 – philwilks

0

이 문제에 웹 API 2.1 ELMAH 모든 처리되지 않은 예외를 기록하는 방법 나를 미치게했다 - -하지만 제이슨이의 도움으로 나는 또한 다음 단계에 블로그 게시물을 작성했습니다

나는 그것을 얻을 수 있었다.

필수 구성 요소 : IIS를 사용해야합니다. Web API는 HttpContext를 사용하지 않지만 IIS에서 가져올 수 있습니다.

  1. ELMAH 사용 NuGet 설치 - /elmah.axd하는 (하지 ELMAH MVC)
  2. 이동 - 당신이 ELMAH하지만, 스타일이 적용되지 않은 표시됩니다.
  3. 이 Global.asax 파일로 이동하여 위해 Application_Start()에 다음을 추가 :

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

  1. 는 ELMAH의 구현을 구성합니다.

참고 : 3이 Golbal.asax에서 수행해야 단계 - 그것은 어떤 이유에 대한 WebApiConfig.cs 파일에서 작동하지 않습니다. (Thanks Jason!))

희망이 있습니다.