C# 如何在HttpContext中正确设置会话?
我正在使用:C# 如何在HttpContext中正确设置会话?,c#,asp.net,ashx,C#,Asp.net,Ashx,我正在使用: if (string.IsNullOrEmpty(myHttpContext.Request.QueryString["code"])) { if (myHttpContext.Session == null || myHttpContext.Session["code"] == null) { OutputError("Code", "Invalid code."); } e
if (string.IsNullOrEmpty(myHttpContext.Request.QueryString["code"]))
{
if (myHttpContext.Session == null || myHttpContext.Session["code"] == null)
{
OutputError("Code", "Invalid code.");
}
else
{
code = myHttpContext.Session["code"].ToString();
}
}
else
{
code = myHttpContext.Request.QueryString["code"];
myHttpContext.Session.Add("code", code);
}
然而,我不断得到错误:
对象引用未设置为对象的实例
用于:
Session.Add(“code”,code)
我想做的就是设置一个简单的会话,请有人帮我,这让我发疯。你忘了如果(myHttpContext!=null)
但是,您可能希望改用始终存在的上下文:HttpContext.Current
// if querystring parameter has a value
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["code"]))
// then use its value
会话相同(如果存在-请参阅@davisleps答案) 您忘记了
if(myHttpContext!=null)
但是,您可能希望改用始终存在的上下文:HttpContext.Current
// if querystring parameter has a value
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["code"]))
// then use its value
会话相同(如果存在-请参阅@davisleps答案) 您的IHttpHandler(ashx)类实现了吗?否则,会话对象将无法访问
public class MyHandler : IHttpHandler, IRequireSessionState
{
public bool IsReusable { get { return false; } }
public void ProcessRequest(HttpContext ctx)
{
// your code here
}
}
您的IHttpHandler(ashx)类实现了吗?否则,会话对象将无法访问
public class MyHandler : IHttpHandler, IRequireSessionState
{
public bool IsReusable { get { return false; } }
public void ProcessRequest(HttpContext ctx)
{
// your code here
}
}
我相信你可能想试试
myHttpContext.Session["code"] = code;
我相信你可能想试试
myHttpContext.Session["code"] = code;
我只有CurrentHandler和CurrentNotification。这很好用。我不敢相信我不能用这个做简单的会话,我将不得不使用cookies。这些不在你最初的问题中,但如果你不确定,请检查它们是否为空。如果您认为问题与问题相关,您可以更新您的问题,以提供更多信息和更多代码。我只是想查找有关如何启用会话的信息,但@davidsleeps刚刚找到了它,所以我对他的答案投了更高的票:我只有CurrentHandler和CurrentNotification。这很好。我不敢相信我不能用这个做简单的会话,我将不得不使用cookies。这些不在你最初的问题中,但如果你不确定,请检查它们是否为空。如果您认为问题与问题相关,您可以更新您的问题,以提供更多信息和更多代码。我只是想查找有关如何启用会话的信息,但@davidsleeps刚刚找到了它,所以我对他的答案进行了投票:几年后,这是我发现的第一篇给出此解决方案的帖子。它需要更多的选票在我的例子中,我使用的界面是
System.Web.SessionState.IReadOnlySessionState
。几年后,这是我发现的第一篇给出这种解决方案的帖子。它需要更多的选票在我的例子中,我使用的界面是System.Web.SessionState.IReadOnlySessionState
。