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

     2023-04-12     164

关键词:

【中文标题】System.Web 可以与具有完整框架的 ASP.Net Core 一起使用吗【英文标题】:Can System.Web be used with ASP.Net Core with Full Framework 【发布时间】:2017-04-16 04:47:00 【问题描述】:

我们正在运行基于不同 .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 来验证 cookie。

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

问题。

    是否可以通过这样的设置使用 system.web?

    我们如何添加对 system.web 的依赖,以便 System.Web.FormsAuthentication 可从 ASP.NET MVC 6 获得。(控制器/http 模块)

【问题讨论】:

为什么不在 .Net core 中进行表单身份验证? .Net Core 不支持表单身份验证。这是我们无法迁移到 .Net Core 的原因之一,因为我们正在使用 FormsAuthentication 运行所有其他站点。 (目前还有其他与.Net core不兼容的依赖) 使用 System.Web dll 与使用 System.Web 不同。 System.Web 管道不会为您的 ASP.NET Core 应用程序运行,因此您无法做您想做的事情。 应该可以使 FormsAuthentication 与 Asp.Net Core 一起工作,示例请参见此处:***.com/questions/44018218/… 【参考方案1】:

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

【讨论】:

谢谢大卫。那是我害怕的。我需要开始研究如何将 SharePoint 中的表单身份验证替换为兼容的选项。 System.Web 的许多相似之处都在 Microsoft.AspNetCore 中。 我们可以添加 Microsoft.AspNetCore 而不是 System.Web 吗?【参考方案2】:

这可能不像你想的那样奏效。当您针对完整框架使用 .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 referencing external dll VS2017RC 具有 alpha 工具,可以消除将其包装在 NuGet 包中的需要,但我在我的机器上安装它时遇到了问题,因此我无法亲自担保。 更新: VS2017 现在为 Asp.Net Core 提供了很好的工具并引用了完整的框架 Dll。

【讨论】:

我们明确将 Cookie 发送到 FormsAuthentication,因此这不是真正的问题。 (如果不是 FormsAuthenticaiton 里面期望来自请求的东西)来自 HttpModule 的示例验证 cookie FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value) 我听到了,如果您可以在 4.x 的 FormsAuthentication API 中使用足够低的原始方法,这些方法不访问 HttpContext 或 any 它的子对象,那么你也许可以让它工作。但这是一个很大的假设,而且大多数人都不想在生产中支持。 我们至少想试试看是否可行。我真的很喜欢新的干净的 Razor 语法。 (我们正在使用 .Net 核心构建其他不相关的站点)但首先我们需要一种方法来为 system.web 创建一个依赖关系,该依赖关系可以从运行完整框架的应用程序访问。如果即使这也不可能,它也是 FormsAuthentication 的一个亮点,那么我们可能需要考虑将其他站点的身份验证更改为可以跨平台使用的新东西。 @TheTechArch 您是否有机会分享任何信息、提示、参考资料,以及您想出的在网络表单和 razor pages/.net 核心站点之间“共享”身份验证的任何内容?跨度> @MargoNoreen 我们最终创建了一个自定义机制,其中 asp.net 核心应用程序调用旧平台来解密 aspxauth 并将其转换为 JWT。

asp.net中request与context.request有啥区别?

...HttpRequest类的属性和方法的编程访问。由于ASP.NET页包含对System.Web命名空间(含有HttpContext类)的默认引用,因此在.aspx页上可以引用HttpContext的成员,而不需要对HttpContext的完全限定类引用。例如,可只使用Request.Browser获取客户端... 查看详情

asp.net和ado.net有啥区别?

....netFramework提供的,用于开发web应用程序的类库,封装在System.Web.dll中,对应程序中是System.Web这个命名空间。ADO.NET对MicrosoftSQLServer和XML等数据源以及通过OLEDB和XML公开的数据源提供一致的访问。5.ado.net是数据库的一种访问方式,... 查看详情

具有高度的 ASP.NET 模拟

...通过web.config配置的ASP.NET应用程序来使用这样的模拟:<system.web><identityimpersonate="true"/><authenticationmode="Windows"/>< 查看详情

是否可以让 ASP.NET Core 解决方案包含具有不同目标框架的项目?

】是否可以让ASP.NETCore解决方案包含具有不同目标框架的项目?【英文标题】:IsitpossibletohaveanASP.NETCoresolutioncontainprojectswithdifferenttargetframeworks?【发布时间】:2018-09-0618:37:35【问题描述】:像这样:一个解决方案(我认为这一定... 查看详情

System.Web.UI.WebControls.Unit 的行为

】System.Web.UI.WebControls.Unit的行为【英文标题】:BehaviourofSystem.Web.UI.WebControls.Unit【发布时间】:2017-09-1813:38:18【问题描述】:我有一个asp:TextBox,我可以通过以下方式设置width:<asp:TextBoxrunat="server"ID="TextBox1"Width="100"></asp:Tex... 查看详情

分布式定时任务调度框架quartz学习与实战记录完整篇(代码片段)

...Jobscheduling(定时调度)领域的开源项目,它可以与J2EE和J2SE应用程序相结合也可以单独使用。Quartz是开源且具有丰富特性的任务调度库,能够集成任何的Java 查看详情

分布式定时任务调度框架quartz学习与实战记录完整篇(代码片段)

...Jobscheduling(定时调度)领域的开源项目,它可以与J2EE和J2SE应用程序相结合也可以单独使用。Quartz是开源且具有丰富特性的任务调度库,能够集成任何的Java 查看详情

asp.net使用了框架web.config如何设置session

在system。web节点下面添加一个sessionState节点属性需要你根据你项目的需求参考技术A你的Session要传什么值?没说清楚!要是页面传值建议在CS页面下设置其值. 查看详情

asp中有没有httpwebrequest

System.Web.HttpRequest是封装浏览器对服务器的请求的,主要用在ASP.NET中,其中包括浏览器请求的网址,查询字符串数据或表单数据等等而System.Net.HttpWebRequest则是用来简化网络请求的过程,从服务器上获取文件/结果的,譬如你可以... 查看详情

asp.net网站未能加载文件或程序集每次发布网站提示不同的程序集名我使用vs2010,.net3.5框架,32位的win7

...现大都是系统自带程序集,例如:未能加载文件或程序集“System.Xml.Linq,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统找不到指定的文件。提示有System错误,System.Web错误,System.Web.Extensions错误,System.Core错... 查看详情

System.Web.HttpUtility.UrlEncode/UrlDecode ASP.NET 5 的替换

】System.Web.HttpUtility.UrlEncode/UrlDecodeASP.NET5的替换【英文标题】:ReplacementforSystem.Web.HttpUtility.UrlEncode/UrlDecodeASP.NET5【发布时间】:2015-09-0708:40:01【问题描述】:我想知道System.Web.HttpUtility.UrlEncode和UrlDecode是否有替代品。我发现Encode... 查看详情

asp.netcore简单介绍(代码片段)

...构建解决方案的同时可以保持灵活性。Asp.netCore不再基于System.Web.dll。当前它基于一系列颗粒化的,并且有良好构建的N 查看详情

在完整的 .NET 框架上测试 Asp.Net Core

】在完整的.NET框架上测试Asp.NetCore【英文标题】:TestingAsp.NetCoreonfull.NETframework【发布时间】:2016-08-2613:11:52【问题描述】:我想对一个针对完整.net框架的asp.net核心项目进行单元测试。我尝试使用thisblogpost中概述的“普通”单元... 查看详情

具有实体框架的动态多数据库上下文

...布时间】:2017-05-1407:41:51【问题描述】:我正在开发一个可以与多个数据库管理器交互的ASP.NET应用程序。所以我决定使用实体框架与这些数据库管理器成功交互。目前我的问题是,当我想从一个数据库切换到另一个数据库时,... 查看详情

asp.net求助

...以及代码中导致错误的出处的详细信息。异常详细信息:System.Exception:SQLServer不存在或访问被拒绝。源错误:执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。堆栈... 查看详情

asp.netcore6框架揭秘实例演示[30]:利用路由开发restapi

...供的请求URL模式与对应终结点之间的映射关系,我们可以将具有相同URL模式的请求分发给与之匹配的终结点进行处理。ASP.NET的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的,它们在ASP.NET平台上... 查看详情

带有 AngularJs 的 Ionic 框架:模态是不是可以与启动模态的视图具有相同的控制器?

】带有AngularJs的Ionic框架:模态是不是可以与启动模态的视图具有相同的控制器?【英文标题】:IonicframeworkwithAngularJs:Canamodalhavethesamecontrollerastheviewthatlaunchesthemodal?带有AngularJs的Ionic框架:模态是否可以与启动模态的视图具有相... 查看详情

获取 ASP.NET System.Web.UI.WebControls.PlaceHolder 的内容

】获取ASP.NETSystem.Web.UI.WebControls.PlaceHolder的内容【英文标题】:GettingthecontentofanASP.NETSystem.Web.UI.WebControls.PlaceHolder【发布时间】:2011-05-3001:39:40【问题描述】:我有一个服务器控件,它有一个作为InnerProperty的PlaceHolder。在渲染时... 查看详情