Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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# System.Web是否可以与具有完整框架的ASP.Net核心一起使用_C#_Asp.net_.net_Asp.net Core_Formsauthentication - Fatal编程技术网

C# System.Web是否可以与具有完整框架的ASP.Net核心一起使用

C# System.Web是否可以与具有完整框架的ASP.Net核心一起使用,c#,asp.net,.net,asp.net-core,formsauthentication,C#,Asp.net,.net,Asp.net Core,Formsauthentication,我们正在运行基于不同.Net版本的服务器站点 其中一个站点正在运行.NET4.6和ASP.NETMVC5.xx 要使用Razor的新语法,我们希望将此站点升级为使用.NET4.6和ASP.NETCore 我们在我们的网站上使用FormsAuthentication,我们将继续使用它,以便用户可以在网站之间移动。(其中一个网站是运行FormsAuthentication的SharePoint网站) 我们知道ASP.NETCore没有使用System.Web中的任何内容,但我们需要从控制器(在登录期

我们正在运行基于不同.Net版本的服务器站点

其中一个站点正在运行.NET4.6和ASP.NETMVC5.xx

要使用Razor的新语法,我们希望将此站点升级为使用.NET4.6和ASP.NETCore

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

我们知道ASP.NETCore没有使用System.Web中的任何内容,但我们需要从控制器(在登录期间创建FormsAuthenticationCookie)和从HttpModule中使用它来验证cookie

我还没有从一个运行ASP.Net内核的网站上找到任何使用system.web的例子。我无法在project.json中为system.web添加依赖项

问题

  • 可以从这样的设置中使用system.web吗

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


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


    但是,如果您确实想引用System.Web.dll,则应该可以引用。如果您使用的是VS2015,则需要获取System.Web.Dll的副本,并将其包装在nuget包中,以便建立对它的引用。请看这里VS2017RC有alpha工具,可以消除将其包装在NuGet包中的需要,但我在将其安装到我的机器上时遇到了问题,因此我无法亲自担保。更新:VS2017现在拥有用于Asp.Net核心和引用完整框架DLL的强大工具

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

    为什么不在.NET Core中执行表单身份验证?在.NET Core中不支持表单身份验证。这就是我们不能迁移到.Net Core的原因之一,因为我们正在运行所有其他带有FormsAuthentication的站点。(目前还有其他与.Net core不兼容的依赖项)使用System.Web dll与使用System.Web不同。您的ASP.NET Core应用程序将不会运行System.Web管道,因此您无法执行您正在尝试执行的操作。应该可以使FormsAuthentication与ASP.NET Core一起工作,请参阅此处的示例:我们显式地将Cookie发送到FormsAuthentication,因此这不是真正的问题。(如果里面没有FormsAuthentication,请从请求中获得一些信息)来自HttpModule的示例验证cookie FormsAuthenticationTicket票证=FormsAuthentication.Decrypt(cookie.Value)我听到了,如果您可以在4.x的FormsAuthenticationAPI中使用足够低的原始方法,而这些方法不访问HttpContext或其任何子对象,那么您就可以让它工作。但这是一个很大的“如果”,而不是大多数人希望在生产中支持的“如果”。我们至少想看看这是否可行。我真的很喜欢新的干净剃须刀语法。(我们正在使用.Net core构建其他不相关的站点),但首先我们需要一种方法来创建system.web的依赖关系,该依赖关系可以从运行完整框架的应用程序访问。如果连这都不可能的话,它将成为表单验证的一个障碍,然后我们可能需要研究将其余站点的身份验证更改为可在其他站点上使用的新内容。@TheTechSearch是否有机会共享您“共享”的任何信息、提示、参考资料或任何东西webforms和razor pages/.net core站点之间的身份验证?@MargoNoreen我们最终创建了一个自定义机制,在该机制中asp.net core应用程序调用旧平台来解密aspxauth并将其转换为JWT。谢谢David。这就是我害怕的。我需要开始研究如何用兼容的东西替换SharePoint中的formsauthentication。Microsoft.AspNetCore中有很多系统.Web相似之处。我们可以添加Microsoft.AspNetCore而不是System.Web吗?