分類:[ASP.NET (C#)]
2010/06/25(Fri) 15:28:58 編集(投稿者)
みなさまこんにちは
ASP.NET MVC2.0(ターゲットのサーバは2003Server + IIS6)での
エラーハンドリングについて行き詰まってしまいました。
どうぞ知恵を貸してください。
エラーが発生した場合、Controllerのクラス/メソッドにフィルターをかけて
特定のエラー用のViewを表示したいとおもっています。
大まかに以下のようなつくりになっています。
[HandleError]
public class TESTController : Controller {
public ActionResult Index() {
throw new System.ApplicationException();
return View();
}
}
--------------------------------
/Views/Shared/Error.aspx
--------------------------------
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %>
<html>
<body>
<%=Html.Encode(Model.Exception.Message)%>
</body>
</html>
--------------------------------
Web.config
--------------------------------
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="Error" />
</system.web>
</system.web>
--------------------------------
Global.asax
--------------------------------
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Top", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Root", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Top", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
}
TESTControllerのIndexを実行するとError.aspxには遷移せず、以下のようなエラー画面が表示されます。
リソースが見つかりませんでした。
説明: HTTP 404. 探しているリソース (または、その依存関係の 1 つ) が削除されたか、名前が変更されたか、また一時的に使用できません。
以下の URL のスペルが正しいことを確認してください。
要求された URL: /Error
SharedにあるはずのファイルError.aspxを検索してくれていないように見えます。
2日くらいまえまではError.aspxが表示されていたのですが、昨日の深夜から突然.NETのエラーが表示されるようになってしまいました。
エラーの動きにかかわる部分は特に変更などはしていないはずなのですが…
修正、確認すべき箇所などありましたら、よろしくお願いします。