ローカルでIIS7とIISExpressを使用するasp.netmvc3アプリケーションがあります。これは、Application_Errorを使用して、例外をログに記録し、カスタムエラーページにリダイレクトします。私のアプリケーションにはさまざまなリージョンがあり、コントローラーまたはアクションが一致しない場合は常にapplication_errorが呼び出されますが、リージョンに対しては呼び出されません。
使用されるルートの例を次に示します。
routes.MapRoute(
"Default",
"{region}/{controller}/{action}/{id}",
new { region = "uk", controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { region = new RegionWhitelistConstraint() } // constraint for valid regions
);
この場合、Application_Errorは/ uk / NotFoundPageに対して発生しますが、/ foo/Homeに対しては発生しません。
ここに地域の制約があります:
public class RegionWhitelistConstraint : IRouteConstraint
{
public bool Match(System.Web.HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
var whiteList = Region.DefaultWhiteList;
var currentRegionValue = values[parameterName].ToString();
return whiteList.Contains(currentRegionValue);
}
}
キャッチオールルートを追加することを提案するこの質問を見ましたが、それとは別に、コントローラーまたはアクションに対して行われるようにApplication_Errorを起動する方法があるかどうかを知りたいと思います。