2016-12-27 53 views
0

我想在所有Web方法之間共享的asmx Web服務中定義一個屬性。 這是我的問題:在Web服務方法之間使用公共屬性

代碼:

myWS test1 = new myWS(); 
test1.SetToken(UserID1); 
test1.AnotherMethod(); 


//stuff... 

myWS test2 = new myWS(); 
test2.SetToken(UserID2); 
test2.AnotherMethod(); 

的Webservice:

[WebService(Namespace = "http://test.ir/")] 
public class myWS : System.Web.Services.WebService 
{ 
    public string Token { get; set; } 

    Public void SetToken(int UserID){ 
     this.Token= BLL.GetToken(UserID); 
    } 

    Public void AnotherMethod(){ 
     BLL.CheckToken(Token);//i want token value be per every myWS web service defined 
    } 
} 

筆記: *靜態屬性是不好的,因爲在所有用戶之間共享,我想令牌值是獨特的每myWS測試=新myWS()

謝謝。

編輯:在每個用戶PC

我的應用程序運行啓動,所有實例調用我的web服務

+0

我不明白這一點。你目前的實施有什麼問題?令牌是一個實例變量,因此它對於myWS的每個實例都不相同 –

+0

認爲他想要基於會話的身份驗證。 –

+0

@alessiobortolato:我在第一個方法中填充了令牌,但是當第二個時候,令牌屬性爲空,這聽起來每個Web方法請求都有它的屬性,並且只在該請求中表示,我的應用程序在每個用戶啓動時在pc上運行和所有實例調用我的Web服務 –

回答

0

我發現Web服務的任何實例是獨一無二的。 我們通過向我們的方法發送param來解決這個問題,將它關聯到一個公共屬性並在該web服務實例的其他方法中使用。

的Webservice: [WebService的空間(namespace = 「http://test.ir/」)

public class myWS : System.Web.Services.WebService 
{ 
    public string Token { get; set; } 

    Public void SetToken(string myToken){ 
     this.Token= myToken; 
    } 

    Public void Method1(){ 
     BLL.CheckToken1(Token); 
    } 

    Public void Method2(){ 
     BLL.CheckToken2(Token); 
    } 
} 

電話:

myWS test1 = new myWS(); 
test1.SetToken("abc"); 
test1.Method1(); 
test1.Method2(); 
相關問題