在IIS中的另一个MVC应用程序下添加MVC应用程序

时间:2019-05-09 15:15:26

标签: asp.net asp.net-mvc asp.net-mvc-4 iis

我有两个独立的MVC应用程序,我想将其中一个部署在另一个应用程序下。我在ISS中创建了一个网站和一个应用程序,例如“ testsite1”和“ testsite2”。 local.testsite1 运行得很好,但 local.testsite1 / testsite2 无法正常工作,因为testsite1正在捕获请求并试图找到控制器并引发异常。我不想在IIS中创建两个不同的网站。如何解决该问题?

2 个答案:

答案 0 :(得分:0)

local.testsite1local.testsite1/testsite2是相同的域。不是子域。这意味着应用程序/ IIS寻找控制器是正确的行为。

您可以考虑将站点合并为一个,并使用MVC Area分开它们?另外,如果您不合并网站,将如何分别为网站触发app_start和其他事件?

在这种情况下,您可以编写将 testsite2 testsite1 的路由分开的自定义路由。

例如testsite1的路由定义可以是:

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

您的testsite2区域路线注册可以是:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new { controller = "Branch|AdminHome|User" },
        new[] { "YourApp.Areas.testsite2.Controllers" }
    );
}

有关实施的更多信息,请访问:Mvc area routing?

答案 1 :(得分:0)

您可以尝试将第二个网站设置为IIS中测试站点1内的应用程序。

为此,请右键单击IIS中第一个MVC应用程序的网站,单击Add Application...,设置别名,要使用的池以及第二个MVC应用程序文件的路径。

Highlighted Add Application option