Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# 如何在RESTWebAPI中保存登录到会话的数据_C#_Asp.net Web Api - Fatal编程技术网

C# 如何在RESTWebAPI中保存登录到会话的数据

C# 如何在RESTWebAPI中保存登录到会话的数据,c#,asp.net-web-api,C#,Asp.net Web Api,我试图将登录详细信息保存到会话中,但出现错误,会话为null,无法访问它 public void saveToSession(UserModel userInfo) { string id = userInfo.Id.ToString(); HttpContext context = HttpContext.Current; context.Session["Id"] = id; context.Session["FirstName"] = userInfo.Fi

我试图将登录详细信息保存到会话中,但出现错误,会话为
null
,无法访问它

public void saveToSession(UserModel userInfo) {
    string id = userInfo.Id.ToString();
    HttpContext context = HttpContext.Current;
    context.Session["Id"] = id;
    context.Session["FirstName"] = userInfo.FirstName;
    context.Session["LastNAme"] = userInfo.LastName;
    context.Session["Username"] = userInfo.Username;
    context.Session["Email"] = userInfo.Email;
    context.Session["Role"] = userInfo.Role;
}

我需要进行其他配置吗

您需要进行一些启动配置

在配置服务中

services.Configure<CookiePolicyOptions>(options => {
    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
    options.CheckConsentNeeded = context => false;
    options.MinimumSameSitePolicy = SameSiteMode.None;
})

REST通常要求执行操作所需的所有内容都包含在请求中,因此不会启用会话。这有点脏

这适用于ASP.NET Web API 5.x。如果您实际使用的是ASP.NET Core,它将无法工作(请更新您的标记)

我最近将此技术用作一种临时措施,并从代码中删除了它,因为我已将其替换为将请求与相关数据联系起来的适当输入。我建议你也这样做


最后,我将其称为“dirty”,因为它依赖于反射在框架类中分配私有字段。如果实现发生更改,它可能只是默默地停止工作:要么字段消失,
GetField
调用返回
null
,随后的检查停止通过,要么字段保留但不再使用。一个不太可能但仍然可能发生的更改是,字段的类型更改为不兼容的类型,然后在启动时出现异常。

您是指在WebConfig中还是什么ConfigureServices中?您使用的是asp.net还是.net core?我想可能有误会吧?我正在使用asp.net
app.UseSession();