1

MVC 4 サイトで 404 アクションを作成して、サイトが任意の画像で 404 を取得した場合にデフォルトの画像に応答しようとしています。

ローカルで実行するとすべて正常に動作しますが、サーバーで Web サイトを公開すると動作しません...

私は自分のWeb.Configにあります:

<customErrors mode="On">
   <error statusCode="404" redirect="~/Home/Error404" />
</customErrors>

そして、私の HomeController で:

    public ActionResult Error404()
    {
        if (Request.Url.AbsoluteUri.Contains(".jpg") || Request.Url.AbsoluteUri.Contains(".gif") || Request.Url.AbsoluteUri.Contains(".png"))
        {
            var dir = Server.MapPath("~/Content/Images/");
            var path = Path.Combine(dir, "imageNotFound400.jpg");
            return base.File(path, "image/jpeg");
        }
        return View();
    }

私が言ったように、ローカルで実行すると動作し、デフォルトの画像が返されますが、オンラインでは、ここでわかるように: http://www.ipgii.org.br/Mensagem?pageSize=9&page=30 とここ: http: //www.ipgii.org.br/Content/Uploads/Thumbnails/alegrai-vos-no-senhor.jpg 醜い HTTP 404 エラー ページに移動します。

私は助けが必要です!=]

4

2 に答える 2

2

ここにあるASP.Net MVCアプリケーションでエラーページを正しく設定することに関するブログ投稿を書きました。

http://web.archive.org/web/20130911212149/http://blog.aquabirdconsulting.com/2012/04/19/setting-up-asp-net-mvc-error-pages/

しかし、あなたが欠けているように見えるのはこれです:

<httpErrors existingResponse="PassThrough" />

これにより、IIS7+ がエラー ページを台無しにしないことが保証されます。投稿を読んで、必要なことをすべて行ったかどうかを確認してください。


編集(OPコメントごと)

system.webServer タグの下に httpErrors タグを配置します。このように見えるはずです。あなたが探していることに役立つかもしれない別の属性を以下に追加しました。

<system.webServer>
    <httpErrors existingResponse="PassThrough" errorMode="Custom" />
</system.webServer>
于 2013-01-08T15:31:39.627 に答える
0

アプリケーションがローカルでは問題なく動作しているが、リモートでホストされているときに問題が発生する場合、私の経験ではほとんどの場合 IIS が適切に構成されていません。

あなたの場合、Web サイトを実行しているアカウント (AppPool アカウント) に /Uploads/Thumbnails フォルダーへの読み取り権限がない可能性があると思います。

次に、Global.aspx.cs ファイルの MapRoute に *.jpg ファイルのエスケープ ステートメントがあることを確認してください。おそらく、IIS は要求を uri: http://www.ipgii.org.br/Content/Uploads/Thumbnails/alegrai-vos-no-senhor.jpgに渡すハンドラーを探していて、見つけることができません。それ。

エラー コードの理由は次のとおりです: IIS の 0x80070002: http://support.microsoft.com/kb/942052

于 2013-01-08T15:14:20.910 に答える