我已将 ELMAH 添加到我的 ASP.NET MVC 4 .Net 4 Web 应用程序中。
集成很简单,而且效果很好。
我已将 web.config 的应用程序设置中的“elmah.mvc.route”值更改为“Admin/SiteLog”路由 - elmah 日志现在显示在此路由上
但是,由于某种原因,它仍然显示在“/elmah”中(没有 css 样式,但内容相同)。
如何禁用默认的 elmah 路由?
使用Elmah.MVC nuget 包进行集成
我已将 ELMAH 添加到我的 ASP.NET MVC 4 .Net 4 Web 应用程序中。
集成很简单,而且效果很好。
我已将 web.config 的应用程序设置中的“elmah.mvc.route”值更改为“Admin/SiteLog”路由 - elmah 日志现在显示在此路由上
但是,由于某种原因,它仍然显示在“/elmah”中(没有 css 样式,但内容相同)。
如何禁用默认的 elmah 路由?
使用Elmah.MVC nuget 包进行集成
我自己刚刚解决了这个问题,最新版本似乎有几个应用程序设置可以很好地解决这个问题。
<add key="elmah.mvc.IgnoreDefaultRoute" value="true" />
<add key="elmah.mvc.route" value="admin/elmah" />
可能还值得了解其他人,因此请查看默认安装。
<add key="elmah.mvc.disableHandler" value="false" />
<add key="elmah.mvc.disableHandleErrorFilter" value="false" />
<add key="elmah.mvc.requiresAuthentication" value="false" />
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="*" />
发生这种情况是因为默认路由(假设您有一个)仍将匹配 Elmah.Mvc.ElmahController。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
无论您是否愿意,路由的“{controller}”部分都会找到匹配的控制器。在这种情况下,这显然是有问题的。
您可以使用此处概述的 IRouteConstraint 在您的路线上添加约束。NotEqual 约束实际上非常有用。
using System;
using System.Web;
using System.Web.Routing;
public class NotEqual : IRouteConstraint
{
private string _match = String.Empty;
public NotEqual(string match)
{
_match = match;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return String.Compare(values[parameterName].ToString(), _match, true) != 0;
}
}
因此,然后使用以下命令从默认路由中排除 ElmahController。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = new NotEqual("Elmah") });
这将使对“/elmah”的请求返回 404。
httpHandlers
您可以通过更新web.config 部分中的路径来指定位置
<httpHandlers>
<add verb="POST,GET,HEAD" path="admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
</httpHandlers>