2

コントローラーに次の HandleError フィルターがあります。

[HandleError(ExceptionType = typeof(ArgumentException), View = "DestinationError")]

customErrors がオンになるように Web.Config をセットアップしました。私が抱えている問題は、Visual Studio からローカルでアプリを実行すると、HandleError フィルターが正常に動作することですが、それをサーバーにデプロイすると、500 内部サーバー エラーが表示され、エラー ビューを表示できないことを示します。見つかった。

以前に誰かがこれに遭遇したことがありますか?ルーティングが問題の根本原因である可能性があるのではないかと疑っています (hoho)。サイトは、wwwroot 自体ではなく、Web ルートのディレクトリに展開されるため、IIS がエラー ファイルを見つけられない可能性があります。

4

4 に答える 4

3

私自身の質問に答える魔法は、IISでHTTPエラーをオフにすることです。私はこの回避策に満足していないので、誰かがより良いアイデアを持っているなら、私はそれらを聞いてみたいです。

于 2008-12-10T12:42:46.840 に答える
3

それ以外の場合は、Web.Config 構成を使用して、予想されるコントローラーのアクションに設定できます。このような:

    <customErrors mode="On" defaultRedirect="/Error">
        <error statusCode="404" redirect="/Error/NotFound"/>
    </customErrors>

次に、インデックス アクションを指すエラー コントローラー (/Error) があるとします。

public class ErrorController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Index()
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View("Index");
    }

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult NotFound()
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View("NotFound");
    }
}
于 2009-08-06T01:04:04.173 に答える
0

MVC 3 RC に移行した後、同じ問題が発生しました。レイアウト/マスターページを追加することで、なんとか回避できました。

@inherits System.Web.Mvc.WebViewPage<System.Web.Mvc.HandleErrorInfo>

@{
    View.Title = "Error";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

これで内部サーバー エラーはなくなりましたが、どこかのバグだと思います。

于 2010-12-08T09:50:23.313 に答える
0

以下を試してみたらどうですか?

Response.TrySkipIisCustomErrors = true;
于 2009-08-05T02:43:19.707 に答える