System.Web可以与带有完整框架的ASP.Net Core一起使用

我们基于不同的.Net版本运行多个站点。

其中一个站点运行.Net 4.6和ASP.Net MVC 5.xx

要使用Razor的新语法,我们希望将此站点升级为使用.Net 4.6和ASP.Net Core

我们在我们的网站上使用FormsAuthentication,我们将继续使用它,以便用户可以在网站之间移动。 (其中一个站点是运行FormsAuthentication的SharePoint站点)

我们知道ASP.Net Core没有使用System.Web中的任何内容,但我们需要使用来自控制器(在登录时创建FormsAuthentication cookie)和HttpModule来validationcookie。

我无法找到如何使用完整框架运行ASP.Net Core的站点中的system.web的任何示例。 我无法在project.json中添加system.web的依赖项。

问题。

  1. 是否可以从这样的设置中使用system.web?

  2. 我们如何向system.web添加依赖性,以便ASP.NET MVC 6中提供System.Web.FormsAuthentication。(Controllers / http模块)

使用System.Web dll与使用System.Web不同。 System.Web管道都不会为您的ASP.NET Core应用程序运行,因此您无法执行您要执行的操作。

这可能不会像你想象的那样奏效。 当您对完整框架使用.Net Core MVC时,System.Web命名空间确实存在并且可以在技术上被调用,但它不会像您想要的那样工作。 原因是Asp.Net Core和System.Web的请求管道完全不同。 因此,例如当使用Asp.Net Core MVC时,如果从请求进入时检查HttpContext对象,它将填充您期望的所有信息,但如果使用System.Web对象检查当前请求,您将看到他们的目前没有要求。 那是因为当前请求没有通过System.Web管道进入。 如果你愿意,它会通过.Net Core“管道”进入。 因此,如果您使用.Net Core MVC,则需要坚持使用该框架的工具和方法,而不是System.Web中提供的工具和方法。

但是,如果你真的想要,应该可以引用System.Web.dll。 如果您使用的是VS2015,则需要获取System.Web.Dll的副本并将其包装在nuget包中以便建立对它的引用。 请参阅此处.net core 1.0 visual studio引用外部DLL VS2017RC具有alpha工具,可以消除将其包装在NuGet包中的需要,但是我在我的机器上安装它时遇到了麻烦,因此我无法亲自担保。 更新: VS2017现在为Asp.Net Core提供了很好的工具,并引用了完整的框架Dll。