ASP.NET MVC路由无法在虚拟目录中工作

时间:2010-07-21 07:44:50

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

我有一个asp.net mvc 2应用程序(使用.net 4.0),当托管在虚拟目录中时,该应用程序无法正确路由。我有以下简单的路由规则:

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

我正在尝试解决http://mydomain.com/accounts/new。其中“帐户”是虚拟目录。如果我将应用程序放在IIS网站的根目录中,它可以正常路由http://mydomain.com/new,但如果我将应用程序放在虚拟目录中,则会出现404错误。我已经调试了,它正在执行global.asax并在vdir中配置路由。在虚拟目录中路由需要做些什么特别的事情吗?

FYI。我正在使用vdir,因为root中有wordpress。

谢谢!

还有一件事是,如果我在参数默认值中指定默认操作,它将执行默认操作/控制器,但它永远不会匹配任何其他操作。

2 个答案:

答案 0 :(得分:1)

我明白了。 Wordpress(我在网站根目录下安装)配置了一些URL重写规则,这些规则阻止了asp.net mvc接收除虚拟目录root之外的任何请求。任何超出该路径的东西都被重写为index.php,这当然在我的mvc应用程序中不存在。

我删除了重写规则,现在一切都按预期工作了。

答案 1 :(得分:0)

如果将其更改为:

,它是否有效
routes.MapRoute( 
    "Default", // Route name 
    "accounts/{action}", // URL with parameters (BUT WITH ACCOUNTS PREFIX)
    new { controller = "accounts" } // Parameter defaults 
);