2012-03-09 53 views
2

WCF服務類的靜態構造函數我有一個服務類實現合同如下:稱爲每次調用

interface IContractFoo 
{ 
    void Foo(); 
} 

Class ServiceFoo() : IContractFoo 
{ 
    public static ServiceFoo() 
    { 
     Log("Static constructor called"); 
    } 

    void Foo() 
    { 
     Log("Foo called"); 
    } 
} 

什麼,我finiding是每一個富API調用時,靜態構造函數被調用。因此,日誌是這樣的 -

靜態構造函數稱爲
美孚稱爲
稱爲
富靜態構造函數稱爲

這不應該發生,因爲這是一個靜態構造函數。任何想法可能會出錯?

感謝所有幫助

+0

我發現了這種情況的發生,因爲WCF/ASP。 NET正在爲每個請求創建一個新的appdomain。必須弄清楚如何阻止這種情況的發生。評論歡迎。 – Prapti 2012-03-09 23:57:16

回答

2

默認情況下,WCF服務使用「每次通話」的模式。我不認爲用static標記構造函數會改變這種行爲。您可以使用ServiceBehavior屬性或通過更改與此服務關聯的web.config文件中的ServiceBehavior設置來更改此設置。

這裏有一對夫婦的文章,可以幫助你決定哪種模式適合您的服務:

+1

我發現這是因爲WCF/ASP.NET正在爲每個請求創建一個新的appdomain。必須弄清楚如何阻止這種情況的發生。評論歡迎。 – Prapti 2012-03-09 23:57:24

+0

Prapti,你在哪找到它的? – SerG 2013-12-12 20:59:04