我遇到了一些问题,并且想知道是否有人可以帮我解决这个问题。
问题是静态变量在不同的线程调用/ seasions之间共享。 这是原始代码:
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]
添加到“UploadPath”var来解决此问题,但它不起作用。全局变量运行在所有会话中,我不希望这样
我可以在这种情况下使用任何替代方案
我感谢所有的回复!
答案 0 :(得分:2)
我建议将UploadPath
存储在数据库中。这样,它可以保证在所有正在运行的会话中都是全局的。
答案 1 :(得分:1)
尝试使用此代码(删除静态修改器)
public partial class ApplicationWSGlobal : System.Web.Services.WebService
{
public string UploadPath = @"";
[WebMethod]
public void SetUploadPath(string x)
{
UploadPath = x;
}
public ApplicationWSGlobal()
{
InitializeComponent();
}
}
答案 2 :(得分:1)
var applicationWSGlobal = new ApplicationWSGlobal
{
UploadPath = your value
};