2013-02-27 194 views
2

我有一個帶有.asmx擴展名的Web服務,它指向我的Web應用程序中的類。在應用程序啓動時添加一些代碼以輸出調試日誌後,我可以看到每次用戶訪問該頁面時都會創建一個新的調試日誌。ASMX服務共享單個類實例

我希望我可以配置這個Web服務只能使用一個實例。

這意味着,當第一個用戶訪問該站點時,它創建了我的web服務的一個實例,然後所有請求都通過同一個類路由,共享相同的狀態。

這甚至可能嗎?

+0

您需要Web服務的多個實例。否則,每個入站HTTP請求都會被其前面的任何請求阻塞。您可以使用靜態變量來存儲特定的信息 - 但要小心,以最大限度地減少您要保留的數據的使用。 – Mike 2013-02-27 01:41:38

回答

1

網站本質上是無國籍的。意思是,每個請求通常與任何其他請求無關。

也就是說,您可以將日誌設置爲您的global.asax文件中的靜態變量。注意線程問題。您也可以查看Elmah

1

你似乎有一些問題。

首先,ASMX技術已經過時了,不應該用於新開發。應該使用WCF來代替。

接下來,是的,你可以有多個調用服務共享同一個類的實例。但是,除非線程安全,否則必須防止同時訪問此類。您應該期望多個服務調用可以同時調用同一個類實例。

最後,ASMX不支持單件Web服務。您可以做的最好的做法是讓多個服務電話共享同一個對象(小心鎖定)。

+0

如果可以的話,我會使用WCF,但我正在嘗試製作一個與舊系統兼容的系統。 – NoPyGod 2013-02-27 03:01:34

+0

爲什麼WCF不兼容? – 2013-02-27 03:02:53

+0

當你說WCF指的是.SVC擴展?或者是其他東西? – NoPyGod 2013-02-27 03:04:59