2011-07-06 20 views
0

このエラー処理ロジックと私の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。

答えて

0

問題はセットアップエラーページが間違っていました。

私は最初のところに戻り、thisチュートリアルに戻りました。私はErrorControllerを持っておらず、HandleError属性を使っていました。このリンクの指示に従って、エラーページの問題を修正しました。ファビコンのために働いたルートを無視する答え。他のファイルは本当に欠けていたファイルでした。

0

同じエラーメッセージが表示されましたが、問題が異なりました。渡されたオプションのパラメータには/という文字が含まれているため、アプリケーションは別のルーティングを検索します。パラメータに/文字が含まれていないことを確認してください。

関連する問題