System.Web 可以与具有完整框架的 ASP.Net 核心一起使用吗
Can System.Web be used with ASP.Net Core with Full Framework
我们有 运行 个基于不同 .Net 版本的网站。
其中一个站点是 运行 .Net 4.6 和 ASP.Net MVC 5.xx
要使用 Razor 的新语法,我们要升级此站点以使用 .Net 4.6 和 ASP.Net Core
我们在我们的网站上使用 FormsAuthentication,我们将继续使用它,以便用户可以在网站之间移动。 (其中一个网站是 SharePoint 网站 运行 FormsAuthentication)
我们了解到 ASP.Net Core 没有使用来自 System.Web 的任何内容,但我们需要使用来自控制器(在登录期间创建 FormsAuthentication cookie)和来自 HttpModule 的内容来验证 cookie。
我无法从站点 运行 ASP.Net Core with Full framwork 中找到任何如何使用 system.web 的示例。我无法在 project.json 中添加 system.web 的依赖项。
问题。
是否可以在这样的设置中使用 system.web?
我们如何向 system.web 添加依赖项,以便 System.Web.FormsAuthentication 可从 ASP.NET MVC 6 获得。(控制器/http 模块)
这可能与您想象的不同。当您针对完整框架使用 .Net Core MVC 时, System.Web 命名空间确实存在并且在技术上可以被调用,但它不会像您想要的那样工作。原因是 Asp.Net Core 和 System.Web 的请求管道完全不同。因此,例如,当使用 Asp.Net Core MVC 时,如果您在收到请求时检查 HttpContext 对象,它将填充您期望的所有信息,但是如果您使用 System.Web 对象检查当前请求,您会看到他们没有当前请求。那是因为当前请求不是通过 System.Web 管道传入的。如果您愿意,它是通过 .Net Core "pipeline" 引入的。因此,如果您使用的是 .Net Core MVC,则需要坚持使用该框架的工具和方法,而不是 System.Web.
中提供的工具和方法。
但是,如果您真的想要引用 System.Web.dll 应该是可能的。如果您使用的是 VS2015,则需要获取 System.Web.Dll 的副本并将其包装在 nuget 包中,以便建立对它的引用。请参阅此处 .net core 1.0 visual studio referencing external dll VS2017RC 具有 alpha 工具,应该消除将其包装在 NuGet 包中的需要,但我在我的机器上安装它时遇到了问题,所以我个人不能保证。 更新: VS2017 现在为 Asp.Net 核心和引用完整框架 Dll 提供了很好的工具。
使用 System.Web dll 与使用 System.Web 不同。 System.Web 管道的 None 将 运行 用于您的 ASP.NET 核心应用程序,因此您无法做您想做的事。
我们有 运行 个基于不同 .Net 版本的网站。
其中一个站点是 运行 .Net 4.6 和 ASP.Net MVC 5.xx
要使用 Razor 的新语法,我们要升级此站点以使用 .Net 4.6 和 ASP.Net Core
我们在我们的网站上使用 FormsAuthentication,我们将继续使用它,以便用户可以在网站之间移动。 (其中一个网站是 SharePoint 网站 运行 FormsAuthentication)
我们了解到 ASP.Net Core 没有使用来自 System.Web 的任何内容,但我们需要使用来自控制器(在登录期间创建 FormsAuthentication cookie)和来自 HttpModule 的内容来验证 cookie。
我无法从站点 运行 ASP.Net Core with Full framwork 中找到任何如何使用 system.web 的示例。我无法在 project.json 中添加 system.web 的依赖项。
问题。
是否可以在这样的设置中使用 system.web?
我们如何向 system.web 添加依赖项,以便 System.Web.FormsAuthentication 可从 ASP.NET MVC 6 获得。(控制器/http 模块)
这可能与您想象的不同。当您针对完整框架使用 .Net Core MVC 时, System.Web 命名空间确实存在并且在技术上可以被调用,但它不会像您想要的那样工作。原因是 Asp.Net Core 和 System.Web 的请求管道完全不同。因此,例如,当使用 Asp.Net Core MVC 时,如果您在收到请求时检查 HttpContext 对象,它将填充您期望的所有信息,但是如果您使用 System.Web 对象检查当前请求,您会看到他们没有当前请求。那是因为当前请求不是通过 System.Web 管道传入的。如果您愿意,它是通过 .Net Core "pipeline" 引入的。因此,如果您使用的是 .Net Core MVC,则需要坚持使用该框架的工具和方法,而不是 System.Web.
中提供的工具和方法。但是,如果您真的想要引用 System.Web.dll 应该是可能的。如果您使用的是 VS2015,则需要获取 System.Web.Dll 的副本并将其包装在 nuget 包中,以便建立对它的引用。请参阅此处 .net core 1.0 visual studio referencing external dll VS2017RC 具有 alpha 工具,应该消除将其包装在 NuGet 包中的需要,但我在我的机器上安装它时遇到了问题,所以我个人不能保证。 更新: VS2017 现在为 Asp.Net 核心和引用完整框架 Dll 提供了很好的工具。
使用 System.Web dll 与使用 System.Web 不同。 System.Web 管道的 None 将 运行 用于您的 ASP.NET 核心应用程序,因此您无法做您想做的事。