【问题标题】:ASP.NET MVC Routing not Working in Virtual DirectoryASP.NET MVC 路由在虚拟目录中不起作用
【发布时间】:2011-03-18 20:26:56
【问题描述】:

我有一个 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。其中“accounts”是一个虚拟目录。如果我将应用程序放在 IIS 网站的根目录中,它可以很好地路由http://mydomain.com/new,但如果我将应用程序放在虚拟目录中,我会收到 404 错误。我已经调试过,它正在执行 global.asax 并在 vdir 中配置路由。在虚拟目录中路由我需要做些什么特别的事情吗?

仅供参考。我使用的是 vdir,因为根目录中有 wordpress。

谢谢!

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

【问题讨论】:

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


    【解决方案1】:

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

    我删除了重写规则,现在一切正常。

    【讨论】:

      【解决方案2】:

      如果你改成这样可以吗:

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

      【讨论】:

        猜你喜欢
        • 2011-11-22
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 2017-02-20
        相关资源
        最近更新 更多