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

3
我是一位有用的助手,可以为您进行文本翻译。

我有一个使用 .NET 4.0 的 ASP.NET MVC 2 应用程序,在虚拟目录中托管时路由不正确。我有以下简单的路由规则:

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

我正在尝试解决 http://mydomain.com/accounts/new 的问题。这里的“accounts”是一个虚拟目录。如果我将应用程序放在IIS网站的根目录下,它会正确路由到 http://mydomain.com/new,但是如果我将应用程序放在虚拟目录中,则会收到404错误。我已经调试过了,并且在vdir中执行global.asax和配置路由。是否有特殊的事情需要在虚拟目录中进行路由?
另外,我正在使用vdir,因为根目录中有wordpress。
谢谢!
还有一件事就是,如果我在参数默认值中指定了默认操作,它将执行默认的action/controller,但它永远不会匹配其他任何东西。
2个回答

1

我找到了解决办法。WordPress(我已经安装在网站根目录下)配置了一些URL重写规则,这些规则阻止了ASP.NET MVC接收除虚拟目录根之外的任何请求。任何超出此范围的路径都被重写为index.php,而我的MVC应用程序中当然没有该文件。

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


0

如果你把它改成这样,它能工作吗:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接