我正在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服务中的常规非异步函数中完成它一样?