0

我遇到了一些问题,想知道是否有人可以帮助我解决这个问题。

问题是静态变量在不同的线程调用/季节之间共享。这是原始代码:

public partial class ApplicationWSGlobal : System.Web.Services.WebService
{
    public static string UploadPath = @"";

    public ApplicationWSGlobal()
    {
        InitializeComponent();
    }

    [Webmethod]
    public void DoSomeThing()
    {
        ... = UploadPath;            
    }
}

我正在从 global.asax 类中设置 UploadPath。

 public void Application_BeginRequest() 
 {
     ApplicationWSGlobal.UploadPath = getData();
 }

我试图通过将[ThreadStatic]var 添加到“UploadPath”变量来解决问题,但它不起作用。全局变量在所有会话中运行,我不希望这样

在这种情况下我可以使用任何替代方案吗

我提前感谢所有回复!

4

3 回答 3

2

我建议存储UploadPath在数据库中。这样就可以保证在所有正在运行的会话中都是全局的。

于 2012-06-21T15:07:12.037 回答
1

尝试使用此代码(删除静态修饰符)

    public partial class ApplicationWSGlobal : System.Web.Services.WebService
    {
        public string UploadPath = @"";

        [WebMethod]
        public void SetUploadPath(string x)
        {
            UploadPath = x;
        }

        public ApplicationWSGlobal()
        {
            InitializeComponent();
        }
     }
于 2012-06-21T14:56:31.243 回答
1
var applicationWSGlobal = new ApplicationWSGlobal
{
   UploadPath = your value
};
于 2012-06-21T15:17:20.833 回答