如何404错误asp.net mvc 2 IIS 7?

时间:2010-06-08 14:12:20

标签: asp.net asp.net-mvc iis-7

我试图抓住像this...但是

这样的404错误
  1. 当我尝试加载http://localhost:11415/wfwe/wefwe/时 - 一切都很好。
  2. 当我尝试加载http://localhost:11415/order/时 - 失败(错误 RouteData必须包含名为'action'的项目,其中包含非空字符串值。)
  3. 当我尝试加载http://localhost:11415/Images/时 - 失败并显示错误文件不存在
  4. 我的路线:

          routes.Add("Order", new LowercaseRoute("Order/{action}/{id}",
                                                   new RouteValueDictionary(
                                                       new
                                                           {
                                                               controller = "Order",
                                                               action = "",
                                                               id = UrlParameter.Optional
                                                           }),
                                                   new MvcRouteHandler()));
    routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
                                                     new
                                                     {
                                                         controller = "Pages",
                                                         action = "Http404",
                                                     }),
                                                 new MvcRouteHandler()));
    

    为什么路由 NotFound - 不要捕获所有404错误。当我尝试上传到我的主机并尝试404我得到此错误(NotFound路线根本​​不起作用) 404 - 找不到文件或目录。 您要查找的资源可能已被删除,名称已更改或暂时不可用。

    我整天都在工作,但不是......请帮帮我

2 个答案:

答案 0 :(得分:2)

  

当我尝试加载http://localhost:11415/order/时 - 失败(错误)RouteData必须包含一个名为'action'且带有非空字符串值的项。)

因此:

  

new {controller =“Order”,    action =“”,id = UrlParameter.Optional}

您需要指定一个操作。

  

当我尝试加载http://localhost:11415/Images/时 - 失败并显示错误文件不存在

如果您的服务器上有Images个文件夹,那么它将“拦截”不让它们通过MVC管道的请求。

答案 1 :(得分:2)

我做到了:

  routes.Add("NotFound", new LowercaseRoute("{*url}", new RouteValueDictionary(
                                                 new
                                                 {
                                                     controller = "Pages",
                                                     action = "Http404",
                                                 }),
                                             new MvcRouteHandler()));

,这在web.config

 <customErrors mode="On">
 </customErrors>

<modules runAllManagedModulesForAllRequests="true"/>
<handlers/>
<httpErrors>
  <remove statusCode="404"/>
  <error statusCode="404" path="/page/http404/" responseMode="ExecuteURL"/>
</httpErrors>

这是我想要的方式。