1

我正在尝试在我的 MVC 4 站点上执行 404 操作来回答默认图像,只要该站点在任何图像上获得 404。

当我在本地运行时一切正常,但是当我在我的服务器上发布我的网站时,它不起作用......

我在我的 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 评论)

您将 httpErrors 标签放在 system.webServer 标签下。它应该看起来像这样。我在下面添加了另一个属性,它可能对您想要做的事情有所帮助。

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

如果您的应用程序在本地工作没有问题,但在远程托管时遇到问题,根据我的经验,大多数情况下 IIS 配置不正确。

在您的情况下,我觉得运行网站的帐户(AppPool Account)可能没有对 /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 回答