ASP .NET MVC-3路由添加/映射到别名的虚拟目录

时间:2012-01-03 17:38:20

标签: asp.net asp.net-mvc-3 url-routing iis-7.5 windows-server-2008-r2

我在域路由方面遵循了Maarten Balliauw's post。我已经能够为不同的子域路由到控制器。但我不知道如何路由到虚拟目录。如您所见,这是路由到通常的mvc控制器的示例示例

routes.Add("DomainRoute", new DomainRoute( 
        "home.example.com", // Domain with parameters 
        "{action}/{id}",    // URL with parameters 
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults 
));

由于我的博客位于虚拟目录上,我需要将路由添加到名为“〜/ blog”的虚拟目录中 我已经尝试了这样的代码没有好结果,

        routes.Add("DomainRoute", new DomainRoute(
            "blog.domain.com",                                     // Domain with parameters
            "blog",                                        // URL with parameters
            new { controller = "blog" }  // Parameter defaults
        ));

如果有人能为此带来一些启示,那就太棒了。

2 个答案:

答案 0 :(得分:2)

您可以尝试将博客设为主Web应用程序的MVC区域。您创建一个名为blog的新区域。这会在您的主webroot中创建一个名为“Areas / blog”的文件夹。然后,您可以将“blog”文件夹转换为指向您的博客应用程序的虚拟目录。

我在最近的管理后端的Web项目中做到了这一点。我用过这篇博文,效果很好。非常简单,让您的应用程序保持良好和干净。

http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects

当你实际进入“博客”区域时,你的行动链接和一切正常。您只需要在链接中添加“Area ='blog'”,即可将您从一个区域移动到另一个区域。

创建博客区域后,请查看它创建的路径文件。我希望这是有道理的。

答案 1 :(得分:0)

这里的含义是虚拟文件夹与它所在的MVC应用程序完全不同 - 如果是这样的话,你是否需要使用MVC路由,因为你不需要任何MVC资源来首先?将子域配置为指向IIS中的相应文件夹并完全绕过MVC的路由可能会更容易。