代码之家  ›  专栏  ›  技术社区  ›  Kieran Benton

带有名为“propertiescontroller”的控制器的ASP.NET MVC路由[关闭]

  •  7
  • Kieran Benton  · 技术社区  · 16 年前

    我在尝试使用名为propertiescontroller的控制器(以及随后的路由)时遇到了一个棘手的问题(请原谅我是MVC新手)。

    我相信这是因为在我的解决方案中有一个名为“属性”的目录(我不能真正删除它)。有办法绕过这个吗?

    路由设置只是一个简单的路由:

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Properties", action = "List", id = "" } // Parameter defaults 
    );
    

    以及我在请求时在iis7中得到的错误“ http://localhost/aptment2/properties/ “是:

    alt text

    我真的找不到解决这个问题的方法吗?干杯。

    4 回复  |  直到 10 年前
        1
  •  5
  •   Community CDub    8 年前

    因为其他人也有同样的问题,我猜你在这里碰到了一个保留关键字(我想类控制器也不在了)。

    这也不是第一次——深入挖掘环境的内部结构, you can't route to Windows' reserved keywords either .

        2
  •  4
  •   Aaron Wagner    12 年前

    我有一个 PropertiesController 在配置为使用IIS Express的MVC 3应用程序上安装。我没有得到你所做的准确的错误,但它是相似的(404.20没有默认文档),我相信这是出于同样的原因。

    它在我们的生产环境中根本不会造成问题,因为我们发布了应用程序的编译版本,然后它就没有属性文件夹。

    为了在本地开发时解决这个问题,我将所有静态内容(scripts/css/etc…)放在一个目录中,并且在打开时忽略它。 RouteExistingFiles .

      routes.IgnoreRoute("static/{*wildcard}");
      routes.RouteExistingFiles = true;
    

    这解决了我的问题,现在我可以浏览example.com/properties/error-free。

        3
  •  2
  •   nkirkes    16 年前

    做一个快速测试,我也会有同样的行为。使用财产以外的东西是可行的选择吗?

        4
  •  0
  •   chris166    16 年前

    我不知道这是否是您的一个选项,但您可以尝试禁用到现有文件的路由。

    routes.RouteExistingFiles = false;