是否可以使用SessionID从WCF服务访问Asp.net会话变量。
我的服务是从jQuery调用的,我的想法是使用jQuery将sessionID解析为服务,然后设置所需的变量,但我找不到这样做的方法。
这是我的jQuery调用
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: baseURL,
data: JSON.stringify(data),
dataType: "json",
success: function (data) {
有没有人知道它是否可能或建议另一种方式设置与会话相关的变量?
答案 0 :(得分:5)
来自浏览器的jQuery请求已经包含会话cookie,因此如果您在ASP.NET兼容模式下运行WCF服务,它已经可以直接访问当前的HttpContext
,这意味着您可以访问会话状态从那里开始。以下是如何在WCF服务上启用此集成的方法:
首先,将以下属性添加到服务类:
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
接下来,将以下内容添加到您的服务.config:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<!-- whatever else you already have -->
</system.serviceModel>`
执行此操作后,您可以访问当前HttpContext
以获取会话状态,如下所示:
public void MyServiceOperation()
{
string myStoredValue = HttpContext.Current.Session["MyStoredValue"];
// whatever
}
答案 1 :(得分:2)
您可以将会话对象存储在数据库本身中,以允许您在不同的Web应用程序或平台中进行访问。