【问题标题】:Accessing session variable from WCF service by parsing sessionID using jQuery通过使用 jQuery 解析 sessionID 从 WCF 服务访问会话变量
【发布时间】:2012-05-14 02:45:34
【问题描述】:

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

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

【问题讨论】:

  • 我已经在我的应用程序中使用了启用 AJAX 的 WCF 服务来使用 jquery 访问服务器上的数据。但是我不需要传递会话 id 或类似的东西,因为会话 cookie 将自动传递给服务器(在使用 jquery 时也是如此)。如果您使用的是 URL-Session,那么这就是另一回事了 ;)

标签: jquery asp.net wcf session


【解决方案1】:

来自浏览器的 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
}

【讨论】:

  • 我添加了您在上面编写的代码,但它接缝我无法访问我的变量。我的会话变量已在包含 jquery 代码的 aspx 文档中设置。但是,当我尝试从我的 Web 服务(托管在同一 IIS 上的虚拟目录中)访问变量时,它在 HttpContext.Current.Session.count 的计数上返回 0?还有其他想法吗?
  • 好吧,我想我找到了问题所在。不可能将 WCF 服务托管在虚拟目录中,而将网站托管在另一个目录中!他们必须在同一个应用程序中处理同一个会话(这是有道理的)。当我将服务移至应用程序时,它运行良好,所以我认为问题已解决:) 谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-10-11
    • 2017-05-10
    • 2010-11-15
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多