のhttpHandlers
セクションでパスを更新することにより、場所を指定することができます1つは持っている)はまだElmah.Mvc.ElmahControllerに一致します。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
ルートの「{controller}」部分には、必要に応じて一致するコントローラがあります。この場合、明らかに問題になります。
hereで説明されている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
申し訳ありませんが、これはnietherがRegisterRoutes方法でIgnoreRouteを追加web.configファイル –
の試みを「elmah.axdを」と言うところのすべてを変えた、助けにはなりませんでした。この方法では、MVCはリクエストを処理しようとしません。 routes.IgnoreRoute( "admin/Elmah.axd"); routes.IgnoreRoute( "admin/Elmah.axd/{* pathInfo}"); routes.IgnoreRoute( "{resource} .axd/{* pathInfo}"); –
このパッチは機能しますが、パッチは必要ありません。デフォルトルートを登録する場所と、web.configの変更後にどこにstilがあるのかを理解したい –