C# 异步窗口进程可以使用会话变量吗?

C# 异步窗口进程可以使用会话变量吗?,c#,asp.net,ajax,asynchronous,C#,Asp.net,Ajax,Asynchronous,我正在通过窗口线程异步处理一段代码(处理excel文件) 在处理代码之前,我设置了一个会话变量并将响应发送回客户端。 调用回调方法时,它是否可以更改会话值? 我是否能够通过AJAX调用访问会话值? 会话发生了什么,窗口线程可以访问它吗 我是否能够通过AJAX调用访问会话值 不,当然不是。会话仅存在于服务器上。没有客户端javascript可以访问它。如果您正在谈论从服务器访问后台线程中的会话,那么这可能仍然是一个问题,因为不再有与当前线程关联的当前HTTP请求。在这种情况下,最好的解决方案是将所

我正在通过窗口线程异步处理一段代码(处理excel文件)

在处理代码之前,我设置了一个会话变量并将响应发送回客户端。 调用回调方法时,它是否可以更改会话值? 我是否能够通过AJAX调用访问会话值? 会话发生了什么,窗口线程可以访问它吗

我是否能够通过AJAX调用访问会话值


不,当然不是。会话仅存在于服务器上。没有客户端javascript可以访问它。如果您正在谈论从服务器访问后台线程中的会话,那么这可能仍然是一个问题,因为不再有与当前线程关联的当前HTTP请求。在这种情况下,最好的解决方案是将所需的值作为参数传递给线程(
state
object),而不是使用ASP.NET会话。

假设您编写了一个WebMethod,并使用AJAX从javascript代码调用它,在这种情况下,此请求是否会由任何IIS工作进程处理?该WebMethod是否能够获取会话值?是的,在这种情况下,您将能够访问会话。如果此WebMethod是asmx web服务,则必须启用会话,但如果它是PageMethod,则可以从
HttpContext.Current.session
访问它。但再一次,我根本不会使用会话。我将让AJAX调用将所需信息传递给WebMethod。或者传递一些标识符,以便WebMethod可以用来从一些数据存储(例如数据库或其他东西)检索实际数据。要访问会话值,您需要知道发送回浏览器并存储在cookie中的会话Id(用于cookiefull会话)。那么AJAX调用是否将此cookie信息传递给服务器端呢?是的,AJAX调用传递会话cookie。这取决于。在大多数情况下,当这个线程运行时,不再有HTTP请求可用。