使用名为“PropertiesController”的控制器的ASP.NET MVC路由

时间:2009-07-01 18:45:39

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

我有一个棘手的问题(因为我是MVC的新手),试图使用名为PropertiesController的控制器(以及随后的路由)。

我相信这是因为在我的解决方案中有一个名为“Properties”的目录(我无法删除)。有没有办法解决这个问题?

路线设置只是一条简单的路线:

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

我在请求“http://localhost/aptment2/properties/”时在IIS7中遇到的错误是:

alt text

当然有一种方法可以找到我找不到的方法吗?欢呼声。

4 个答案:

答案 0 :(得分:5)

由于其他人遇到了同样的问题,我猜你在这里遇到了一个保留关键字(我想象ClassControllers也是如此)。

这不是第一次发生 - 深入挖掘环境的内部,you can't route to Windows' reserved keywords either

答案 1 :(得分:4)

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

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

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

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

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

答案 2 :(得分:2)

运行快速测试,我得到了相同的行为。使用“属性”之外的其他东西是否可行?

答案 3 :(得分:0)

我不知道它是否适合您,但您可以尝试禁用路由到现有文件。

routes.RouteExistingFiles = false;