4

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

有谁知道这是否可能或建议另一种方式设置会话相关变量?

4

2 回答 2

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
}
于 2012-05-04T15:59:53.273 回答
2

您可以将会话对象存储在数据库本身中,以允许您在不同的 Web 应用程序或平台中访问。

于 2012-06-25T19:26:33.403 回答