【问题标题】:Integrate ASP.NET Core MVC Application to existing ASP.NET MVC Application将 ASP.NET Core MVC 应用程序集成到现有的 ASP.NET MVC 应用程序
【发布时间】:2019-05-06 05:22:45
【问题描述】:

我正在生产中运行现有的 ASP.NET MVC 应用程序。现在我的客户提出了一个新的要求/增强功能,他想用 ASP.NET Core MVC 开发它。新的增强功能将是一个新的独立模块。并且在开发完成后,他想将其与现有的 ASP.NET MVC 应用程序集成。

我想知道,是否可以集成这两个应用程序,因为 ASP.NET Core 是完全不同的框架,从头重写,而旧应用程序使用 .NET Framework 4.6.x。

非常感谢任何帮助或任何类型的链接来指导我。

提前致谢。

阿南德·尼玛

【问题讨论】:

  • 使用 .Net Standard 2.0 创建新功能,您应该能够将其重用于框架 4.6.2。见docs.microsoft.com/en-us/dotnet/standard/net-standard
  • 谢谢约翰。还有一件事,我是否能够使用这种方法共享会话和连接字符串。目前我的连接字符串在 ASP.NET MVC 的 web.config 中,一旦我准备好新功能,我希望该连接也可用于新应用程序。

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

您的问题实际上很广泛,因为“集成”是一个广泛的话题。它涵盖了应用程序的许多不同方面,确切的方法取决于对这些应用程序的深入了解。

也就是说,一般来说,ASP.NET MVC 和 ASP.NET Core 是完全独立的平台。从如何使用能够在同一个 ASP.NET MVC 项目中同时运行 Web 窗体和 MVC 代码的意义上说,您不能“集成”它们。它们将是两个需要独立部署的独立应用程序。

您可以“共享”连接字符串,也就是说您可以共享数据库,但您需要在这方面做出一些决定。例如,如果当前 MVC 项目使用 EF6,您还需要在 Core 项目中使用 EF6 才能共享相同的实体类。这意味着,目前,目标是 .NET Framework,而不是 .NET Core。但是,.NET Core 3.0 承诺原生运行 EF6。或者,您可以使用 EF Core 并将数据库视为现有的实体中的脚手架。这会导致一些代码重复,但可能是一个可以接受的折衷方案,具体取决于具体情况。

可以共享会话、cookie 和身份验证等内容,但可能需要对 ASP.NET MVC 项目进行根本性更改。也就是说,ASP.NET Core 使用数据保护提供程序进行加密和解密,而不是 ASP.NET 的机器密钥方法。但是,通过对 OWIN 的支持,ASP.NET MVC5 还可以支持数据保护提供程序进行加密/解密。因此,如果您切换到在那里使用数据保护,并在两个应用程序之间共享密钥环,那么每个应用程序都将能够解密由另一个应用程序加密的内容。但是,如果您尚未在 MVC 应用程序中使用数据保护,那么更改可能会有些痛苦。

如果您只关心共享身份验证,则可以通过 Identity Server 等集中式身份验证提供程序来实现。这将允许两个应用程序相互独立运行,但仍共享一个共同的用户/角色存储并支持 SSO。但是,这也可能需要对现有 MVC 应用程序进行一些重大更改。这都是取舍。

【讨论】:

  • 感谢克里斯的详细描述。让我简要概述一下我想要实现的目标。我正在开发一个原型,其中我在 IIS 中配置了一个 MVC 5 Web 应用程序。现在,我想在这个 MVC 5 应用程序中添加一个新的 ASP.NET Core 应用程序。我在 MVC 5 应用程序中配置了 ASP.NET Core 应用程序,但它不工作。所以试图弄清楚是否可以在 MVC 5 应用程序中添加一个 ASP.NET Core 应用程序。
  • 您是说在 IIS 中将其部署为站点下的虚拟应用程序吗?
  • 如果是这样,你可以,但你需要非常小心。您需要在主应用程序的 web.config 的每个部分上显式关闭 web.config 继承,并且如果您将来添加新部分,请记住这样做。除此之外,您仍然需要一个单独的应用程序池,并且核心应用程序必须独立部署。
  • 谢谢克里斯。我正在独立部署的核心应用程序。如何关闭 web.config 继承?
  • 我尝试使用 ...system.web stuff ,并在 IIS 中启用目录列表。当我从 borwser 导航到核心应用程序时,我正在获取目录结构。我看不到网页
猜你喜欢
  • 2017-03-19
  • 2020-02-24
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多