Asp.net 是否将多个webapp项目(不同区域)部署到同一站点?

Asp.net 是否将多个webapp项目(不同区域)部署到同一站点?,asp.net,asp.net-mvc-5,visual-studio-2017,razorengine,Asp.net,Asp.net Mvc 5,Visual Studio 2017,Razorengine,在一个解决方案中有多个Asp.Net Framework 4.6.2 MVC/Razor项目。 它们使用区域,每个项目将实现一个或多个不同于其他区域的区域。 一个项目作为“主要”项目,包括global.asax。 “从属”应用程序可以了解“主”应用程序,但反之亦然 是否可以将它们部署到同一个网站?(在prem VM上)。 可能会出现一些冲突,例如_Layout.cshtml 我必须了解如何为“从属”项目程序集中的类设置依赖注入 谢谢 -John我认为这不容易实现,因为MVC站点的很多内容都是预编

在一个解决方案中有多个Asp.Net Framework 4.6.2 MVC/Razor项目。 它们使用区域,每个项目将实现一个或多个不同于其他区域的区域。 一个项目作为“主要”项目,包括global.asax。 “从属”应用程序可以了解“主”应用程序,但反之亦然

是否可以将它们部署到同一个网站?(在prem VM上)。 可能会出现一些冲突,例如_Layout.cshtml

我必须了解如何为“从属”项目程序集中的类设置依赖注入

谢谢


-John

我认为这不容易实现,因为MVC站点的很多内容都是预编译到DLL中的,而其中一些(例如视图文件)必须实际部署到DLL之外。我认为你可能会遇到冲突或困惑。这当然不是一个可靠的,可定义的过程,你可以指望在生产

根据您在评论中的描述,这里有一些解决潜在问题的替代建议。这些只是一些想法,其中一些我已经做过或看到过,可能不适合您,但其中任何一个都应该比试图预测部署过程容易得多:

1) 试着像现在一样在单独的项目中构建这些区域,但是不要包含所有通用的MVC内容。也就是说,就好像它们是只包含特定于其功能的文件的库一样。然后您可以将它们打包为Nuget包。准备好后,将包安装到“主”站点以创建组合解决方案。这样你就不会遇到页面布局等方面的冲突。如果其中一个子项目发生了变化,那么主站点就可以升级NuGet包了。您可以通过Visual Studio Online(如果您有订阅)或通过共享网络文件夹在最简单的级别上创建私有NuGet提要。我认为其他在线供应商也提供私人订阅源。我们已经成功地将一些默认样式、脚本、布局等应用到我们所有的MVC应用程序中

2) 将您的解决方案重新设计为一系列独立的应用程序(这是您已经拥有的一部分),但有一个提供联合身份验证/授权的中央服务(如ADFS、IdentityServer或类似),以及一个web API(或多个API),其他站点可以调用该API以编程方式访问其他集中服务和功能。我很有信心,你可以使用路由配置和共享会话,让它像一个站点一样连接在一起

3) 将其全部构建为一个站点,但各个团队在后端服务、类等方面有明确的划分,因此他们不会干扰彼此的代码。每个团队可以将代码签入到源代码管理中的不同分支,并且只能合并到共享分支以进行集成/系统测试和部署。您可以在每次签入后使用持续集成服务器来测试构建过程,如果您有健壮的代码检查和门控签入,您可以阻止人们更改他们不应该更改的内容。如果开发生命周期以不同的速度进行,您还可以灵活地发布来自不同领域的更新或不更新


4) 以上所有的一些组合

也许可以使用手动过程,但最终可能会很棘手,因为在MVC站点中,大部分内容都被预编译到DLL中。你为什么一开始就把它们作为单独的项目来做?有必要这么做吗?这是我的客户。他们希望创建一个可扩展的框架,主网站可以在其中管理身份验证和其他服务等设施。而地区作家只是担心商业应用程序。他们有不同的团队在发展,所以没有机会一起建设。他们可以自定义部署,并将二进制文件放入站点的Bin文件夹中。下级应用没有global.asax,只是通过区域注册配置依赖注入。