このエラー処理ロジックと私のELMAHで捕捉されている特定のリソースが、何百もの無意味なエラーで埋められている場所について、他の人が尋ねました。より面倒なことに、それはエラーをF5-ingし続ける必要があるため、デバッグに苦労します。これらのリソースは:favicon.ico、Error.aspx(私のカスタムエラーページ)、および特定のフォルダ内のいくつかの画像です。MVCルーティングおよびカスタムエラーページが見つかりません問題
は、だから私はthisポストのアドバイスに従って、Global.asaxの中でルートを無視して問題を解決しようとした:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("elmah.axd");
routes.IgnoreRoute("/Content/images/{*pathinfo}"); // This has succesfully rid me of a bunch of errors
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" }); // This has successfully rid me of the favicon error
routes.IgnoreRoute("{*allaspx}", new { allaspx = @"(.*/)?.aspx(/.*)?" }); // NOT SURE OF THIS ONE
...
);
}
私はコメントで述べてきたように、これは多くのをクリアしていますエラー。私が今問題になっているのは、アプリケーションを起動すると、404エラーの画面が表示され、カスタムエラーページが見つからないということです。エラーの詳細:
System.Web.HttpException(0x80004005):ファイル '/Error.aspx'が存在しません。 System.Web.UI.Util.CheckVirtualFileExists System.WebのでSystem.Web.Compilation.BuildManager.GetVPathBuildResultInternalで(VirtualPath virtualPath) (VirtualPath virtualPath、ブールnoBuild、ブールallowCrossApp、ブールallowBuildInPrecompile、ブールthrowIfNotFound、ブールensureIsUpToDate) で.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContextコンテキスト、VirtualPath仮想パス、ブールnoBuild、ブールallowCrossApp、ブールallowBuildInPrecompile、ブールthrowIfNotFound、ブール保証IUpToDate) at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath、HttpContext context、Boolean allowCrossApp、Boolean throwIfNotFound)System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath、型requiredBaseType、HttpContextコンテキスト、ブール型)の (HttpContextコンテキスト、String requestType、String requestType) at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContextコンテキスト、String requestType、 System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.ExecuteでSystem.Web.HttpApplication.MapHttpHandlerでVirtualPath virtualPath、ストリングPhysicalPathの) (のHttpContextコンテキスト、文字列requestType、VirtualPathパス文字列pathTranslated、ブールuseAppConfig) () at System.Web.HttpApplication.ExecuteStep(IExecutionStepステップ、ブール&が同期して完了)
とWeb configセクション:
<system.web>
<customErrors mode="On" defaultRedirect="Error.aspx" />
...
</system.web>
私は、ルーティングを変更した前に、エラーページがうまく働いていました。私が/ content/imagesのパスをコメントアウトすると、アプリケーションは再び動作します(「パス '{0}'のコントローラが見つからないか、IControllerを実装していません」というエラーに戻ります)。 faviconまたはallaspxルートをコメントアウトすると、この404エラーに変更はありません。
ご協力いただければ幸いです。
乾杯、
Tim。