2

さて、エラー時にコントローラーをフォルダーのError.cshtml下に移動させようとしています。Shared起動時にフィルターを構成しました。

Global.asax

protected void Application_Start()
{
    ...
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    ...
}

FilterConfig.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

HomeController.cs

[HandleError(View = "Error")] <---- I have the HandleError attribute
public class HomeController : Controller
{
    IDbConnection _connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);

    [Authorize]
    public ActionResult Index()
    {
        // get the users current events
        try
        {
            ViewBag.UserEvents = _connection.Query<MyEvents>("select ...)", new { });
        }
        catch (Exception ex)
        {
            throw new HttpException(500, ex.Message);
        }

        return View();
    }
    ...
}

そのためIndex、接続を開かなかったためにメソッドが例外をスローすると、デフォルトのASP.NET例外ページが表示されます。ここで何が恋しかったですか?

ありがとう!

4

1 に答える 1

7

万が一、これをローカルマシンで実行していますか?customErrorsがOffまたはRemoteOnlyに設定されている場合、デフォルトでは、HandleErrorはローカルマシンにエラーを表示しません。オンに設定します。

于 2012-10-14T22:44:01.223 に答える