Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何";巢;现有MVC核心站点中的MVC核心应用程序_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

Asp.net core 如何";巢;现有MVC核心站点中的MVC核心应用程序

Asp.net core 如何";巢;现有MVC核心站点中的MVC核心应用程序,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在考虑在开发/调试ASPNET MVC核心站点时构建一个“仪表板”。棘手的是,我希望我自己的仪表板本身就是一个MVC核心站点,我不希望它干扰“父”站点 理想情况下,接线应尽可能简单: app.UseMyDashboard("/somepath"); 这将在这个路径上公开我自己的MVC核心应用程序。与它自己的服务容器一起完成,以避免运行仪表板应用程序所需的任何服务污染父站点 如果可能的话,我希望它是完全独立的。这通常不取决于你怎么做。模块化/微服务应用程序中的正常情况是创建单独的应用程序,这

我正在考虑在开发/调试ASPNET MVC核心站点时构建一个“仪表板”。棘手的是,我希望我自己的仪表板本身就是一个MVC核心站点,我不希望它干扰“父”站点

理想情况下,接线应尽可能简单:

app.UseMyDashboard("/somepath");
这将在这个路径上公开我自己的MVC核心应用程序。与它自己的服务容器一起完成,以避免运行仪表板应用程序所需的任何服务污染父站点


如果可能的话,我希望它是完全独立的。

这通常不取决于你怎么做。模块化/微服务应用程序中的正常情况是创建单独的应用程序,这些应用程序在自己的端口上运行,并使用反向代理(nginx、IIS)将其路由到正确的应用程序

但您也可以使用
UseWhen
进行分支

app.UseWhen(context => context.Request.Path.StartsWith("dashboard"), appBuilder =>
{
    // register here branched middlewares etc. 
}
但这并不是你想要的,尽管你可能会感兴趣

根据MSDN文档:“区域实际上是应用程序内部的MVC结构”


这允许您拥有完全独立的路由方案和并行结构,以满足您的内部需求。除了一个区域前缀,您可以拥有所有相同的内容。

嗨,我想您已经回答了自己的问题。你的建议听起来很好。试试看它是否能解决你的问题。@Monza-不幸的是,它不能。MVC的两个版本会发生冲突,如果您的控制器名称与MVC的名称相同,并且MVC不确定要使用哪些控制器,则路由表会混合在一起,等等。在您的应用程序中有一个“区域”可以独立运行。如果这不起作用,您应该将您的MVC和MVC Core彼此相邻地托管一个enable CORS,以便它们可以相互通信。@GlennFerrie-它们共享相同的MVC选项,共享相同的
服务提供商。他们不是独立的。一个区域实际上只是一组路由。这需要对消费方进行重要的设置。设想一种情况,比如他们在哪里嵌入了自己的仪表板(从外观上看,通过自带剃须刀实现部件)。理想情况下,我们对消费代码的影响是绝对最小的。区域不是我真正想要的,因为它们不是完全独立的。他们使用与“主要”应用程序相同的
ServiceProvider
,等等。