我有一个会话变量,我需要在具有许多webmethod函数的cs页面上使用。如果我按如下方式声明,我并不总是得到最新的变量。有时它会给我在最后一个之前存储的变量。我做错了什么?
public partial class uc_functions : MyBasePage
{
static string ucService = HttpContext.Current.Session["ucService"] as string;
....
[WebMethod] //1
[WebMethod] //2
[WebMethod] //3
答案 0 :(得分:7)
目前,当首次加载类时,您正在初始化变量一次。您希望每个请求都有不同的值。
您应该拥有属性或方法,而不是拥有变量。例如:
private static string Service
{
get { return (string) HttpContext.Current.Session["ucService"]; }
}
或者在C#6中:
private static string Service => (string) HttpContext.Current.Session["ucService"];
(顺便说一句,我会审核.NET naming conventions - 一个叫uc_functions
的课让我不寒而栗......)