声明将由许多WebMethod函数使用的单个静态变量

时间:2015-05-14 12:44:49

标签: c# asp.net session-variables code-behind webmethod

我有一个会话变量,我需要在具有许多webmethod函数的cs页面上使用。如果我按如下方式声明,我并不总是得到最新的变量。有时它会给我在最后一个之前存储的变量。我做错了什么?

public partial class uc_functions : MyBasePage
{
    static string ucService = HttpContext.Current.Session["ucService"] as string;
....

[WebMethod] //1
[WebMethod] //2
[WebMethod] //3

1 个答案:

答案 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的课让我不寒而栗......)