我有以下全局变量:
private ArrayList listSelectedUnavailables
{
get
{
return (ArrayList)ViewState["listSelectedUnavailables"];
}
set
{
ViewState["listSelectedUnavailables"] = value;
}
}
我可以在网络表单的每个过程中使用它。
但是,我需要在同一个WebForm中使用的WebMethod中使用它,但似乎无法识别任何全局变量。所以:
如何从WebMethod访问全局变量?
最佳答案
ViewState
属性取决于使页面(.aspx)回发视图状态,即存储“变量”的位置。 WebMethod
不包括整页回发(如果有回发的话),因此没有可读取的视图状态。相反,您可能想要使用会话变量,例如:
private ArrayList listSelectedUnavailables
{
get
{
return (ArrayList)Session["listSelectedUnavailables"];
}
set
{
Session["listSelectedUnavailables"] = value;
}
}
会话将变量存储在Web服务器的内存中(但与特定的浏览器会话有关)。这有其自身的缺点,例如易变至工作进程重置,负载平衡方面。