1

我有 2 个 asp.net mvc 4 应用程序:

  • MVCForum.site - 带有论坛的开源应用程序和
  • My.Site - 我的客户的站点

每个应用程序都有 HomeController。我需要像这样将它们部署到本地 IIS 7.5:

my.Site -> localhost:81 我可以通过 URL localhost:81/homelocalhost:81/

MVCForumSite.Site -> localhost:81/forum 我可以通过 URL 访问它 localhost:81/forum

它们是分开工作的,但是当它们同时开始工作时,路由冲突就会发生。*如果我将客户的默认配置与 Azure 模拟器一起使用,那么它们可以一起工作,但我不想使用模拟器,因为每次重启对于开发来说都太长了。

MVCForum 有下一条路线(如果需要修复它们很糟糕):

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{ favicon}", new { favicon = @"( ./)?favicon.ico( /.*)?" });

        routes.MapRouteLowercase(
            "categoryUrls", // Route name
            string.Concat(AppConstants.CategoryUrlIdentifier, "/{slug}"), // URL with parameters
            new { controller = "Category", action = "Show", slug = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRouteLowercase(
            "categoryRssUrls", // Route name
            string.Concat(AppConstants.CategoryUrlIdentifier, "/rss/{slug}"), // URL with parameters
            new { controller = "Category", action = "CategoryRss", slug = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRouteLowercase(
            "topicUrls", // Route name
            string.Concat(AppConstants.TopicUrlIdentifier, "/{slug}"), // URL with parameters
            new { controller = "Topic", action = "Show", slug = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRouteLowercase(
            "memberUrls", // Route name
            string.Concat(AppConstants.MemberUrlIdentifier, "/{slug}"), // URL with parameters
            new { controller = "Members", action = "GetByName", slug = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRouteLowercase(
            "tagUrls", // Route name
            string.Concat(AppConstants.TagsUrlIdentifier, "/{tag}"), // URL with parameters
            new { controller = "Topic", action = "TopicsByTag", tag = UrlParameter.Optional } // Parameter defaults
        );

        routes.MapRouteLowercase(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

和 My.Site 的 RouteConfig.cs

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

你能帮我部署它吗?

4

2 回答 2

0

您是否尝试将 IgnoreRoute 添加到您的 My.Site 的 RouteConfig.cs?

routes.IgnoreRoute("Forum/{*pathInfo}");
于 2013-11-14T18:56:29.823 回答
0

所以接下来的事情有帮助:

  1. 在 IIS 中创建了一个名为site.localhost的站点。
  2. 在该site.localhost->forum中创建了一个应用程序(如内部应用程序)
  3. 创建了第二个名为fakeforum.localhost的假站点(用于在部署时正确移动文件)
  4. site.localhost看起来 C:\inetpub\MyWebsite\site
  5. 论坛(site.localhost->forum)查看 C:\inetpub\MyWebsite\forum 5 个假论坛 fakeforum.localhost 也查看 这有助于在论坛发布期间C:\inetpub\MyWebsite\forum不覆盖site.localhost的配置。
  6. 在 IIS 中停止fakeforum.localhost并且永远不要运行它
  7. 使用 start url:和 server name , site name (来自 IIS)将 mvc 应用程序发布到Visual Studio 中的site.localhostlocalhost:81localhostsite.localhost
  8. 使用启动 url将 mvc 论坛应用程序发布到fakeforum.localhostlocalhost:81/forum : 服务器名称localhost、站点名称fakeforum.localhost(来自 IIS)

它能做什么?

  1. 它有助于发布 - 将文件从 dev 文件夹移动到 intepub 并让 xdt:Transform 工作,并且不要更改文件夹内的原始 web.config 以进行开发。
  2. 它使用 IIS 是一个无需运行即可发布的容器。

在此处输入图像描述

于 2013-11-15T22:34:57.377 回答