2011-03-15 77 views
4

我想知道如何在Web服務C#類的構造函數中初始化一些靜態變量,以便每次調用Web方法都可以使用這些變量的內容。例如,我想從數據庫加載一些數據並將其用於Web方法。這樣的靜態變量將是隻讀的。目的是讓這些值只加載一次。或者每次調用Web方法時都會執行構造函數?如何在Web服務中初始化靜態變量

回答

8

是的,每個請求都會生成Web Service類的新實例。

但是,您可以使用靜態構造函數,它將初始化一些靜態字段。請注意,這些字段對於所有用戶以及您的Web服務的所有請求都是通用的。

public class WebService1 : System.Web.Services.WebService 
{ 

    public static int loadedFromDataBase; 

    static WebService1() 
    { 
     loadedFromDataBase = ... 
    } 

    [WebMethod] 
    public string HelloWorld() 
    { 
     return loadedFromDataBase.ToString(); 
    } 
} 
+0

因此,對象不像數據庫連接那樣彙集。還是有辦法將他們集中起來?或者我可以在其他地方聲明變量以避免每次執行方法時加載? – 2011-03-15 12:13:26

+3

loadedFromDataBase不是每次都加載,它只加載一次,並且每個請求都共享它。 – SWeko 2011-03-15 12:58:50