我正在尝试在不使用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)并且无法访问。
编辑:我正在尝试实施博客中提到的方法。
根据它,elmah.axd页面应该在添加包后立即可访问。但这对我不起作用。
更新:错误登录工作正常BTW。唯一的问题是我无法在浏览器中查看错误日志。
答案 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获取它。
RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");
注意:第3步必须在Golbal.asax中完成 - 无论出于何种原因,它都无法在WebApiConfig.cs文件中运行。 (谢谢杰森!;))
希望这有帮助!