Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在HttpContext中正确设置会话?_C#_Asp.net_Ashx - Fatal编程技术网

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