没有MVC .Net 4.5.1的Web API 2中的Elmah

时间:2013-12-13 12:43:45

标签: asp.net-web-api elmah .net-4.5

我正在尝试在不使用MVC的ASP.NET WEB API 2项目中实现Elmah错误日志记录。

我尝试了Elmah和Elmah.mvc nuget包,我甚至无法使用两者浏览到emlah页面。

ASP.NET WEB API 2中是否支持elmah?

PS。我甚至没有开始记录错误。我只是想浏览页面(elmah中的elmah.axd或elmah.mvc中的/ 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页面应该在添加包后立即可访问。但这对我不起作用。

更新:错误登录工作正常BTW。唯一的问题是我无法在浏览器中查看错误日志。

3 个答案:

答案 0 :(得分:6)

我遇到了这个问题,因为我将我的web api配置为从根URL而不是'api'路径运行,例如api.mydomain.com代替mydomain.com/api。这导致web api路由捕获/elmah.axd路径并返回404错误No type was found that matches the controller named 'elmah.axd'

要修复它,我忽略了我的Global.asax文件中的路径:

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

    GlobalConfiguration.Configure(WebApiConfig.Register);
}

注意:使用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

的Web API 2.1中使用elmah记录所有未处理的异常

答案 1 :(得分:2)

Web API目前不支持Elmah,因为Web API不使用HttpContext。如果您在IIS下托管Web API,则可以访问来自托管ASP.NET运行时的HttpContext。

您使用的是哪个主机?如果它不是IIS / ASP.NET运行时,那么您将无法使用Elmah。

答案 2 :(得分:0)

这个问题让我疯了 - 但是在杰森的帮助下,这篇文章我得到了它。

先决条件:您必须使用IIS。 Web Api不使用HttpContext,但您可以从IIS获取它。

  1. 使用NuGet安装ELMAH - (不是Elmah MVC)
  2. 转到/elmah.axd - 你会看到ELMAH,但没有风格。
  3. 转到Global.asax文件并将以下内容添加到Application_Start():
  4. RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");

    1. 配置您的Elmah实施。
    2. 注意:第3步必须在Golbal.asax中完成 - 无论出于何种原因,它都无法在WebApiConfig.cs文件中运行。 (谢谢杰森!;))

      希望这有帮助!