0

これは単純ですでに答えられているに違いありませんが、私はそれに何時間も無駄にしてきました。間違ったアドレスでエラーページを取得する方法がわかりません。また、リダイレクトするのではなく、URLを保持したいと思います。CustomErrors、HttpErrors、Application_Errorの多くの組み合わせを試しましたが、存在しないコントローラーでは何も機能しません。HttpErrorsによっては、常にIIS404.0ページまたは空の404応答が返されます。IIS 7.5、MVC3で実行されています。

4

2 に答える 2

0

次のルートを使用して、他のルートと一致しないすべてのリクエストがそこに含まれるようにします。そうすれば、そのケースを非常に簡単に処理できます。

        // this route is intended to catch 404 Not Found errors instead of bubbling them all the way up to IIS.
        routes.MapRoute(
            "PageNotFound",
            "{*catchall}",
            new { controller = "Error", action = "NotFound" }
        );

最後にマップします(他の.MapRouteステートメントの後にそのステートメントを含めます)。

于 2012-04-07T03:17:22.390 に答える
0

どこで解決策を見つけたか覚えていません。ただし、エラーを処理するコードは次のとおりです。まず、ErrorController を作成します。

public class ErrorController : Controller
{
    //
    // GET: /Error/
    public ActionResult Index()
    {
        return RedirectToAction("Index", "Home");
    }

    public ActionResult Generic()
    {
        Exception ex = null;
        try
        {
            ex = (Exception)HttpContext.Application[Request.UserHostAddress.ToString()];
        }
        catch { }

        return View();
    }

    public ActionResult Error404()
    {            
        return View();
    }
}

次に、Global ファイルを開き、次のコードを追加します。

protected void Application_Error(object sender, EventArgs e)
{
     Exception ex = Server.GetLastError();
     Application[HttpContext.Current.Request.UserHostAddress.ToString()] = ex;
}

3 番目に、webconfig の customerror を変更します。

<customErrors mode="Off" defaultRedirect="/Error/Generic">
  <error statusCode="404" redirect="/Error/Error404"/>
</customErrors>

More: エラーレイアウトをもう1つ作成しました。それは物事をさらに明確にします。:)

これがお役に立てば幸いです。

于 2012-04-08T02:43:04.433 に答える