通过 WebMethod 获取从 VB.NET 到 JavaScript 的 SessionID

Get SessionID via WebMethod from VB.NET to JavaScript

我有点无能为力,因为以下代码无法正常工作:

代码隐藏:

<WebMethod(EnableSession:=True)>
Public Shared Function GetSessionID() As String
    Dim sID = HttpContext.Current.Session.SessionID
    Debug.WriteLine(sID)
    Return sID
End Function

JavaScript:

var sID;

function init() {
    sID = PageMethods.GetSessionID();
...

sID 显然存在并显示在调试输出中,但在 JavaScript sID 中保持 "undefined" 因为函数 returns "undefined"在 Firebug 控制台中执行时。那里发生了什么?

您的代码看起来没问题。你从哪里调用函数?尝试在函数内定义变量:

function init() {
    var sID = PageMethods.GetSessionID();
}

如果您正在尝试读取 sessionID,为什么不直接从 cookie 中读取?

JavaScript

function readCookie(name) {
  var nameEQ = escape(name) + '=',
    ca = document.cookie.split(';'),
    i = 0,
    c;
  for (i = 0; i < ca.length; i++) {
    c = ca[i];
    while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
    if (c.indexOf(nameEQ) === 0) { return unescape(c.substring(nameEQ.length, c.length)); }
  }
  return null;
}

var sID = readCookie('ASP.NET_SessionId');

您需要像这样定义 PageMethodsOnSuccess 回调:

var sID;

function init() {
    PageMethods.GetSessionID(OnSuccess);
}

function OnSuccess(response, userContext, methodName) {
    sID = response;
    alert(sID);
}

参考文献: