ASP.Net MVC 404文件未找到自定义页面

时间:2015-03-31 05:38:18

标签: asp.net asp.net-mvc

很抱歉,如果问题不明确,但我需要“找不到文件”自定义页面,而不是“找不到页面”。如果你在url .html的末尾输入 - 它不会通过Routes。

我有捕获所有路线的路线:

routes.MapRoute(
            name: "Default",
            url: "{*url}",
            defaults: new { controller = "Home", action = "Index", url = UrlParameter.Optional },
            constraints: new { Domain = new DomainsConstraint() }
        );

但是如何才能找到未找到文件的自定义页面?如果在和url我添加例如.html - 它将显示我找不到404文件

3 个答案:

答案 0 :(得分:1)

只需在web.config文件中设置错误配置

<强>的Web.config

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

<强>控制器

public ActionResult Error(){
   var result = new FilePathResult("~/404.html", "text/html");
   return result;
}

答案 1 :(得分:0)

routes.MapRoute(
    "404-PageNotFound",
    "{*url}",
    new { controller = "StaticContent", action = "PageNotFound" }
    );  

您可以创建自己的自定义错误页面:

<customErrors mode="On" defaultRedirect="~/Error">
      <error redirect="~/StaticContent/PageNotFound" statusCode="404" />
</customErrors>

public class StaticContent : Controller
{
    public ViewResult Index()
    {
        return View("Error");
    }
    public ViewResult PageNotFound()
    {
        Response.StatusCode = 404;  //you may want to set this to 200
        return View("PageNotFound");
    }
}

答案 2 :(得分:0)

您可以从Global.asax文件进行管理。 您可以从这个答案from here

中获得完美的解决方案