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

Declare a single static variable that will be used by many WebMethod functions

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

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

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

目前您正在初始化变量 一次,当 class 首次加载时。您希望每个请求都有不同的值。

与其使用变量,不如使用 属性 或方法。例如:

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