通过使用jQuery解析sessionID从WCF服务访问会话变量

时间:2012-05-04 14:27:33

标签: jquery asp.net wcf session

是否可以使用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) {

有没有人知道它是否可能或建议另一种方式设置与会话相关的变量?

2 个答案:

答案 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应用程序或平台中进行访问。