我正在尝试在我的MVC 4网站上制作一个404动作来回答默认图像,无论网站在任何图像上获得404。
当我在本地运行时,一切都很精细,但是当我在我的服务器上发布我的网站时,它不起作用......
我在我的网站上.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错误页面。
我需要帮助! =]
答案 0 :(得分:2)
我写了一篇关于在ASP.Net MVC应用程序中正确设置错误页面的博客文章。
但看起来你缺少的是:
<httpErrors existingResponse="PassThrough" />
这可确保IIS7 +不会弄乱您的错误页面。给帖子一个阅读,看看你是否做了所需的一切。
您将httpErrors标记放在system.webServer标记下。看起来应该是这样的。我在下面添加了另一个属性,可能对您要做的事情有所帮助。
<system.webServer>
<httpErrors existingResponse="PassThrough" errorMode="Custom" />
</system.webServer>
答案 1 :(得分:0)
如果您的应用程序在本地工作没有问题,但在远程托管时遇到问题,根据我的经验,大多数情况下IIS未正确配置。
在您的情况下,我认为网站运行的帐户(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