Web服务中委托异步函数中的会话变量

时间:2013-02-17 10:15:27

标签: c# asp.net web-services asynchronous delegates

我正在ASP.NET 4.5中开发我的应用程序。我创建了一个委托函数,如下所示:

private delegate void CounterDelegate(List<int> temp, int id);
private CounterDelegate sfd;


public Foo(){
  sfd = new CounterDelegate(this.Counter);
}

我这样称呼函数:

 sfd.BeginInvoke(temp, id, null, null);

目标是在异步函数中以异步方式运行“计数器”功能。这样做很好。该函数是从Web服务中的函数调用的。我的问题是Sessions。

我的功能:

[WebMethod(EnableSession = true)]
public  void Counter(List<int> temp, int id)
{
   if (Session["user"] == null)
   {
      // do something
   }
}

问题是Session等于null,当我尝试初始化它时:

 Session["user"] = new List<int>();

我得到 NullReferenceException未被用户代码异常处理。我确实尝试将它放在try catch中并在catch块中初始化它的问题是我之后无法继续运行代码,因为它离开了函数。

是否有可能初始化并使Session变量可用,就好像我会在Web服务中的常规非异步函数中完成它一样?

0 个答案:

没有答案