【问题标题】:How 404 error asp.net mvc 2 IIS 7?asp.net mvc 2 IIS 7出现404错误怎么办?
【发布时间】:2010-06-08 14:12:20
【问题描述】:

我试图捕捉像 this... 这样的 404 错误但是

  1. 当我尝试加载 http://localhost:11415/wfwe/wefwe/ - 一切都很好。
  2. 当我尝试加载 http://localhost:11415/order/ 时 - 失败(出现错误 RouteData 必须包含一个名为“action”且具有非空字符串值的项目。)
  3. 当我尝试加载 http://localhost:11415/Images/ - 失败并出现错误 文件不存在

我的路线:

      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 - 找不到文件或目录。 您要查找的资源可能已被删除、名称已更改或暂时不可用。

我整天都在处理这个问题,但没什么...请帮助我

【问题讨论】:

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


    【解决方案1】:

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

    因为这个:

    新的{控制器=“订单”, action = "", id = UrlParameter.Optional }

    你需要指定一个动作。

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

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

    【讨论】:

    • 非常感谢。以及为什么在托管时我得到标准的 httperrors 404 - 找不到文件或目录。您要查找的资源可能已被删除、名称已更改或暂时不可用,而不是我的 404 错误?
    • @Dmitriy:因为“你的 404”将由一些自定义视图提供,只有在 MVC 处理请求时才会返回。如果是文件,则不是。在这种情况下,您可以在 web.config 中指定要返回的静态页面。
    • 哦,不。在带有 url 的 localhost 上:localhost:11415/wfwe/wefwe - 一切都很好,但在现场 - 这很糟糕。我的网站:kidemon.ru/wqefwef/we - 标准错误,不是我的。
    • @Dmitriy:可能与主机上的 IIS 配置有关。还要检查 web.config 是否将 customErrors 选项设置为“on”。
    【解决方案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>
    

    这是我想要的。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2011-05-20
      • 2021-08-06
      • 2012-09-06
      • 2022-12-10
      • 2012-07-13
      相关资源
      最近更新 更多