2015-03-31 129 views
0

对不起,如果问题不明确,但我需要“文件未找到”自定义页面,而不是“找不到页面”。如果您在url .html的末尾输入内容,则不会穿过路线。ASP.Net MVC 404文件未找到自定义页面

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

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

但我怎样才能使文件自定义页面没有找到?如果在和URL的我添加例如html的 - 它会告诉我404文件未找到

+0

您究竟在寻找什么?你想从控制器的操作方法重定向到HTML页面吗?或者你想检查这种行为方法或控制器是否存在? – 2015-03-31 05:41:47

+0

如果我有像myUrl.com/home.html网址 - 它会显示我找不到文件。我只需要将此页面替换为自定义 – 2015-03-31 05:47:18

回答

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"); 
    } 
} 
+0

它将捕获页面未找到,但未找到文件 – 2015-03-31 05:52:16

+0

我刚试过。 – 2015-03-31 05:52:35

+0

你可以试试看:http://blogs.microsoft.co.il/shay/2009/03/06/real-world-error-hadnling-in-aspnet-mvc-rc2/ – 2015-03-31 05:58:25

1

只需设置在网络配置错误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; 
} 
0

您可以从Global.asax文件管理。 您可从此答案中获得最佳解决方案from here