gpt4 book ai didi

jquery - ASP.NET 应用程序中的 session 值丢失

转载 作者:行者123 更新时间:2023-12-01 05:06:29 26 4
gpt4 key购买 nike

我在 ASP.NET 中创建了 HttpHandler 类,并配置了一个网站来处理带有 *.test 路径的任何请求。

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["Game"] 为 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 发送的这些请求属于同一 session ,这就是 session 值丢失的原因。我认为我需要发回一些 cookie 信息或其他信息以便识别下一个请求,但事实是我不知道。

非常感谢任何帮助。

最佳答案

如果有人遇到此问题,我想指出发生这种情况是因为我在 ProcessRequest 方法中使用了一些文件操作。

var doc = XDocument.Load (@"c:\XO_Game_Website\bin\test.xml"); 
if (context.Session ["something"] == null)
{
context.Session.Add("something", "something");
doc.Root.Element ("xxx").Value = "null";
}
else
{
doc.Root.Element ("xxx").Value = "not null";
}
doc.Save("path");

一旦我删除了 doc.Save("path");从方法来看,一切都很好。尽管如此,我还是不明白为什么文件操作代码会重置 session 值。

祝你编码愉快。

关于jquery - ASP.NET 应用程序中的 session 值丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5256914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com