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();
 }

「UploadPath」変数に を追加して問題を解決しようとしました[ThreadStatic]が、うまくいきませんでした。そのグローバル変数はすべてのセッションで実行されますが、それは望ましくありません

この状況で使用できる代替手段はありますか

事前にすべての返信に感謝します!

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 に答える