3

サーバーによって作成されたデフォルトの404ページの代わりに、表示するように作成したカスタム404ページを取得しようとしています。アプリケーションをローカルでデバッグする場合は意図したとおりに機能しますが、サーバーでアプリケーションを実行する場合は機能しません。そして、それらのweb.configファイルはまったく同じように見えます。

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

奇妙なことに、モードを「オフ」または「RemoteOnly」に設定したり、「〜/ Error」を「Error」だけに変更したり、セクションを完全に削除したりすると、結果は常に同じになります。ローカルでは見栄えの良い404ページですが、サーバー上ではありません。

ローカルでデバッグする場合、このメソッドは意図したとおりに実行されます。

    public class ErrorController : BaseController
    {
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult NotFound()
        {
            Response.StatusCode = (int)HttpStatusCode.NotFound;
            ErrorSignal.FromCurrentContext().Raise(new HttpException(404, Request.Url.PathAndQuery + " was not found"));
            return View();
        }
    }

Global.asaxでこのルートが見つかったため:

routes.MapRoute(
"NotFound",
"{*path}",
    new { controller = "Error", action = "NotFound" });

ありとあらゆるアドバイスをいただければ幸いです。

4

3 に答える 3

3

問題が解決しました-IIS設定を管理している人のところに行き、404のエラーページパスをURLへのリダイレクトに変更してもらいました。そのURLは「/Error/NotFound/Index.aspx」です。しかし、明らかに、これはsystem.webServerセクションにこれを追加するのと同じです。

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound" responseMode="ExecuteURL" />
</httpErrors>
于 2011-11-08T15:12:24.843 に答える
1

サーバーで取得している404のように聞こえますが、これはカスタム404が見つからないためです。カスタム404を参照できますか?

于 2011-11-04T15:40:32.730 に答える
0

サーバー上のIISが統合モードで実行されていませんか?もしそうなら、404sはasp.netにヒットしません。どのバージョンのiisですか?クラシックモードでないことを確認してください。

于 2011-11-04T16:28:40.920 に答える