Asp.net mvc 如何使用MVC访问服务器端的会话存储?

Asp.net mvc 如何使用MVC访问服务器端的会话存储?,asp.net-mvc,angular,sessionstorage,Asp.net Mvc,Angular,Sessionstorage,我正在window.sessionStorage中保存一些用户不敏感的数据。这些数据特定于“浏览器”选项卡,现在我想从服务器端访问存储在会话存储中的数据,我该怎么做。您不能会话存储是驻留在客户端计算机上的浏览器中的内容。ASP.NET MVC驻留在您的服务器上。您不能简单地将客户端浏览器数据“拉”到服务器,浏览器必须将其发送给您 使用JavaScript,您可以读取会话存储中的任何内容,然后发出AJAX请求将其发送到ASP.NET MVC let sessionData = sessionSto

我正在window.sessionStorage中保存一些用户不敏感的数据。这些数据特定于“浏览器”选项卡,现在我想从服务器端访问存储在会话存储中的数据,我该怎么做。

您不能<代码>会话存储是驻留在客户端计算机上的浏览器中的内容。ASP.NET MVC驻留在您的服务器上。您不能简单地将客户端浏览器数据“拉”到服务器,浏览器必须将其发送给您

使用JavaScript,您可以读取会话存储中的任何内容,然后发出AJAX请求将其发送到ASP.NET MVC

let sessionData = sessionStorage.yourData;
this.http.post('api/wherever', sessionData).subscribe(response => { ... });

另一种选择是不将数据存储在会话存储器中,而是存储在cookie中。Cookie数据随每个发送到服务器的HTTP请求一起传递。这样,数据就可以在ASP.NET MVC中立即访问。

创建一个ASP.NET隐藏字段,如下所示

let sessionData = sessionStorage.yourData;
this.http.post('api/wherever', sessionData).subscribe(response => { ... });
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "$('#MainContent_hiddenFieldID').val(sessionStorage.getItem('sessionStorageVariableName'));", true);

然后简单地引用服务器端代码上的隐藏字段。

您可以使用window.sessionStorage.getItem(“key”)获取值;并使用jQueryAjax将其传递给服务器端的某个操作。实际上,我在当前的项目$http中使用了angular4({url:/Home/SomeMethod”,method:“GET”,params:{someKey:“userData”});我们不能使用一些类似于从服务器端访问cookie的方法从服务器端访问会话存储,例如此请求。Cookies[“Currency”]不,会话存储在客户端浏览器中。可能不可能得到它。Activex可能会有所帮助,但只适用于IE。Cookie是一个不同的概念。即使客户端禁用了cookie,您也无法访问它。