我在ASP.NET中創建了HttpHandler類,並配置了一個網站來處理任何帶有* .test路徑的請求。在ASP.NET應用程序中丟失的會話值
public class GameHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest (HttpContext context)
{
if (context.Request.ContentType == "application/json; charset=utf-8")
{
...
switch (parameters ["type"])
{
case "Setup":
result = Setup (context);
break;
case "DoStep":
result = DoStep (context, parameters);
break;
}
...
}
else
context.Response.Write (@"
<html>
<head>
</head>
<body>
<!-- some HTML -->
</body>
</html>"); // this is returned on first request
}
在安裝方法我有這樣的代碼:
context.Session ["Game"] = new Game();
然而,在DoStep方法,context.Session.Count = 0和context.Session [ 「遊戲」]是NULL。 在客戶端我使用jQuery來調用這些函數。這樣的調用看起來是這樣的:
$.ajax({
url: "/test.test",
type: "POST",
data: "{'type':'Setup'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {...}
});
$.ajax({
url: "/test.test",
type: "POST",
data: "{'type':'DoStep','row':'" + row + "','column':'" + column + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {...}
});
我懷疑的問題是,ASP.NET不知道這些要求從JavaScript屬於同一個會話發送,這就是爲什麼會話值會丟失。我認爲我需要發回一些cookie信息或者下一個要識別的請求,但事實是我沒有任何想法。
任何幫助真的很感激。
也許你可以比較服務器的會話ID和客戶端(cookie,url)上的會話ID? – Menahem 2011-03-10 08:36:23
編輯:是不是這個你問的問題[這裏]的一個副本(http://stackoverflow.com/questions/5245868/how-do-i-persist-session-values-in-asp-net)? – Menahem 2011-03-10 08:43:26
是的,這是同樣的問題,但在這裏我更深入地描述了它,到目前爲止我還沒有得到任何好的答案。 – Zoliqa 2011-03-10 08:50:58