0
我想每个用户只有一个会话。但是当我运行ajax查询时,系统会生成新的会话。 当我在计算机上的调试模式下进行测试时,没有任何问题。仅在分布式应用程序的客户端站点上出现问题。无法从客户端上的ajax获取Web服务中的会话状态
ASP页:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Text1" type="text" /><br />
<asp:Button ID="btn_ASP" runat="server" onclick="btn_ASP_Click" Text="Asp" />
<input id="btn_JS" type="button" value="JS" onclick="GetUsersList();" /><br />
天冬氨酸按钮,生成 'ConnectCount' 会话元素:
protected void btn_ASP_Click(object sender, EventArgs e)
{
int count;
if (HttpContext.Current.Session["ConnectCount"] == null)
count = 1;
else
count = (int)HttpContext.Current.Session["ConnectCount"] + 1;
HttpContext.Current.Session["ConnectCount"] = count;
TextBox1.Text = count.ToString();
}
Web服务代码:
[WebMethod(EnableSession = true)]
[ScriptMethod]
public string Get_UsersList2()
{
int count;
if (HttpContext.Current.Session["ConnectCount"] == null)
count = 1;
else
count = (int)HttpContext.Current.Session["ConnectCount"] + 1;
HttpContext.Current.Session["ConnectCount"] = count;
return count.ToString();
}
的Ajax查询Web服务
function GetUsersList() {
$.ajax({
url: '/WbSrv_ACTR.asmx/Get_UsersList2',
type: "POST",
contentType: "application/json; charset=utf-8",
data: '{}',
success: function (data, st) {
if (st == "success") {
if (data.d != "") {
text1.value = data.d;
}
else {
}
}
},
error: function() {
alert("Cannot get list of users");
}
});
}
按钮中的代码只会将Session [“ConnectCount”]加1。
所以,当我点击天冬氨酸按钮5次和1次的JQ按钮(在本地IIS - 测试):
result: asp = 5, jq = 6 (correct)
做服务器相同的操作IIS 7.5:
result: asp = 5, jq = 1 (incorrect)
服务器使用其他会话。 为了测试 - 我已经添加了通过ASP按钮,在会议上,一些元素和Web服务无法找到他们(会话是空的存在,但的SessionID是一样的)
任何人都可以有解决方案或解决方法吗?
Web配置:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
<customErrors mode="Off" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
感谢很多答案。我已经按照你的建议更改了代码。但不幸的是它并没有解决我的问题。当我运行ajax查询 - 系统获取与APS按钮相同的ID的Session,但它没有任何元素 - 会话是空的。但在调试模式下,所有工作正常 - 我可以在Session中添加参数,从asp按钮读取它从Web服务。 – Vladimir 2013-03-26 23:17:51