Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 解决方案.net Core 2.1中的会话更改_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 解决方案.net Core 2.1中的会话更改

C# 解决方案.net Core 2.1中的会话更改,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我有一个.NETCore2.1解决方案,其中有一个WEPAPI项目,目前还有一个使用Razor的独立MVC前端项目。在这两个项目startup.cs文件中,我声明services.AddHttpContextAccessor() 从前端代码中,我将会话设置为1小时,并且可以看到HttpContext.session.Id的值。因此,现在对WebApi方法进行了调用,我传递了一个IhttpContextAccessor对象,但现在当我查看传递的上下文上的session.Id时,它的值与调用应用程序

我有一个.NETCore2.1解决方案,其中有一个WEPAPI项目,目前还有一个使用Razor的独立MVC前端项目。在这两个项目startup.cs文件中,我声明
services.AddHttpContextAccessor()

从前端代码中,我将会话设置为1小时,并且可以看到HttpContext.session.Id的值。因此,现在对WebApi方法进行了调用,我传递了一个IhttpContextAccessor对象,但现在当我查看传递的上下文上的session.Id时,它的值与调用应用程序设置的值不相同。为什么上下文不一样

在我的WebApi中,我编写了一个自定义授权fiter,它被放在api的一个方法上。我以以下方式引用上下文:

…..
public class AuthorisationFilter : IAuthorizationFilter
    {
        private readonly IHttpContextAccessor _httpContext;
        public AuthorisationFilter(IHttpContextAccessor httpContext) => _httpContext = httpContext;

        public void OnAuthorization(AuthorizationFilterContext context)
        {…….

如果您有一个单独的MVC站点项目,那么实际上您正在创建两个单独的站点,运行在各自的应用程序池中。您不能在这两个站点之间共享会话状态,默认情况下,会话数据存储在每个应用程序的内存中。您可能可以为此设置一个共享会话存储,但这听起来充其量只是一个黑客行为,您可能希望了解您正在尝试实现的目标,因为很可能会有更好的方法

我不确定您是如何“传递”IHttpContextAccessor对象的,但这似乎不是一个好主意


现在,当你创建一个你真正想要的API时,使用会话状态与此正好相反。

如果你有一个单独的MVC站点项目,那么你实际上是在创建两个单独的站点,运行在它们自己的应用程序池等中。你不能在这两个站点之间共享会话状态,默认情况下,会话数据存储在每个应用程序的内存中。您可能可以为此设置一个共享会话存储,但这听起来充其量只是一个黑客行为,您可能希望了解您正在尝试实现的目标,因为很可能会有更好的方法

我不确定您是如何“传递”IHttpContextAccessor对象的,但这似乎不是一个好主意

现在,当你创建一个你真正想要的API时,使用会话状态是完全相反的