我无法使用Firefox和Chrome在.net网络服务中获得现有会话,因为它在IE 9或更高版本中工作。
案例: 我正在使用Session.IsNewSession属性来检查天气会话是新的还是现有的。如果使用Internet Explorer存在会话,则此属性为false,如同在Firefox和Chrome中一样,它给了我真实的信息。
在我的网络服务中,我没有存储任何会话变量,我只是想检查天气会话是新的还是现有的。
我使用.ajax调用来调用此Web服务。
[ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod(EnableSession = true)]
public string GetBusinessPartnerByKey(string CardCode, string dbName)
{
General.WriteLog("Getting BP by key for : " + CardCode, "BP");
//if (General.Company != null)
//if (Session["Session"]!=null)
if (!Session.IsNewSession) //here I am getting true in IE and false in Firefox and Chrome.
{
try
{
//do some stuff
}
catch (SqlException e1)
{
return code.General.Response("-1", e1.Message, "");
}
catch (Exception e1)
{
return code.General.Response("-1", e1.Message, "");
}
}
else
return code.General.Response("-99", "Session Expire", "");
}
这是我的JavaScript代码段
$.ajax({
type: "POST",
url: ClientURL + "/GetBusinessPartnerByKey",
data: JSON.stringify({ CardCode: cardcode, dbName: $.session.get("dbName") }),
contentType: "application/json; charset=utf-8;",
dataType: "json",
error: function (xhr, status, error) {
try {
var msg = JSON.parse(xhr.responseText);
$(this).MessageBox('error', msg.Message);
}
catch (e) {
$(this).MessageBox('error', xhr.responseText);
}
return true;
},
success: function (data) {
xml = $.parseXML(data.d);
$BP = $(xml);
$BusinessPartner = $BP;
if ($BP.find('Result').text() == '0') {
//do some success stuff
}
}
else {
if ($BP.find('Result').text() == "-99") {
//do some session exipration stuff
}
else {
$(this).MessageBox('error', $BP.find('Message').text());
}
}
}
});

答案 0 :(得分:0)
通过在global.asax文件中进行一些调整来解决问题。