Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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
C# 将ASP.NET核心MVC应用程序集成到现有ASP.NET MVC应用程序_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 将ASP.NET核心MVC应用程序集成到现有ASP.NET MVC应用程序

C# 将ASP.NET核心MVC应用程序集成到现有ASP.NET MVC应用程序,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我有一个现有的ASP.NET MVC应用程序正在生产中运行。现在,我的客户提出了一个新的需求/增强,他希望使用ASP.NET核心MVC进行开发。新的增强将是一个新的独立模块。开发完成后,他希望将其与现有的ASP.NET MVC应用程序集成 我想知道,是否有可能集成这两个应用程序,因为ASP.NET核心完全不同于从头重写的框架,而旧的应用程序使用的是.NET framework 4.6.x 任何帮助或任何类型的链接,指导我在这方面将非常感谢 提前谢谢 Anand Neema你的问题实际上相当广泛,

我有一个现有的ASP.NET MVC应用程序正在生产中运行。现在,我的客户提出了一个新的需求/增强,他希望使用ASP.NET核心MVC进行开发。新的增强将是一个新的独立模块。开发完成后,他希望将其与现有的ASP.NET MVC应用程序集成

我想知道,是否有可能集成这两个应用程序,因为ASP.NET核心完全不同于从头重写的框架,而旧的应用程序使用的是.NET framework 4.6.x

任何帮助或任何类型的链接,指导我在这方面将非常感谢

提前谢谢


Anand Neema

你的问题实际上相当广泛,因为“整合”是一个广泛的话题。它涵盖了应用程序的许多不同方面,具体的方法取决于对这些应用程序的深入了解

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

您可以“共享”连接字符串,也就是说您可以共享数据库,但是您需要在这方面做出许多决定。例如,如果当前MVC项目使用EF6,那么您还需要在核心项目中使用EF6,以便共享相同的实体类。这意味着,目前的目标是.NETFramework,而不是.NETCore。然而,.NETCore3.0承诺在本地运行EF6。或者,您可以使用efcore并将数据库视为实体中的现有脚手架。这将导致一些代码重复,但可能是可以接受的折衷方案,具体取决于具体情况

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


如果您只关心共享身份验证,那么也可以通过集中式身份验证提供程序(如Identity Server)来实现。这将允许两个应用程序彼此独立运行,但仍共享一个共同的用户/角色存储并支持SSO。然而,这也可能需要对现有的MVC应用程序进行一些实质性的更改。这都是折衷。

使用.Net标准2.0创建新功能,您应该能够在framework 4.6.2中重用它。谢谢你,约翰。还有一件事,我将能够使用这种方法共享会话和连接字符串。目前,我的连接字符串位于ASP.NET MVC的web.config中,一旦我准备好了新功能,我希望该连接也可用于新应用程序。感谢Chris提供的详细说明。让我简单地概述一下我想要实现的目标。我正在开发一个原型,在这个原型中,我在IIS中配置了一个MVC5Web应用程序。现在,我想在这个MVC5应用程序中添加一个新的ASP.NET核心应用程序。我在MVC5应用程序中配置了ASP.NET核心应用程序,但它不工作。因此,尝试找出是否有可能在MVC 5应用程序中添加ASP.NET核心应用程序。您是说将其作为虚拟应用程序部署在IIS中的站点下吗?如果是,您可以,但需要非常小心。您需要在主应用程序的web.config的每个部分上显式关闭web.config继承,如果以后添加新部分,请记住这样做。除此之外,你还需要一个单独的应用程序池,核心应用程序必须独立部署。谢谢Chris。我正在独立部署核心应用程序。如何关闭web.config继承?我尝试使用…system.web stuff关闭web.config继承,并在IIS中启用了目录列表。当我从borwser导航到核心应用程序时,我得到的是目录结构。我看不到网页