2009-05-06 93 views
4

我每次調用webmethod時都會調用我的webservice構造函數。這對我添加的一些新功能造成了一些問題,我無法弄清楚我做錯了什麼導致了這一點。我正在創建web服務的唯一地方是在global.asax.cs的Application_Start中,但是如果我將代碼移除到webservice的new,它每次調用webmethod時仍會調用構造函數。

我已經通過瀏覽到.asmx文件並調用webmethod的方式測試了這一點,並且我還創建了一個測試控制檯應用程序,該應用程序具有對webservice的引用並將調用這些方法。這兩個結果都一樣。

我在ASP.NET 1.1中使用c#。有任何想法嗎?

編輯:
我想創建心跳線程輪詢一個窗口服務。我試圖將結果保存在散列表中(多個線程輪詢多個服務)。我已經改變了webmethod(因爲它用於輪詢windows服務)以從哈希表中獲取結果。我們正在嘗試增加此webmethod調用的速度。爲什麼我每次調用webmethod時都會調用WebService構造函數?

回答

18

每當您調用Web方法時,都會創建Web服務的新實例 - 這是預期的行爲。 Web服務是無狀態的,這意味着Web方法調用之間的服務實例不會保持活動狀態,因此您無法在Web服務的成員(字段,屬性)中存儲任何狀態。

如果您想要在Web方法調用之間保存一些值/狀態,則必須使用ASP.NET會話或數據庫來達到此目的。

詳見這個問題:Is this supposed to work this way?

+0

非常感謝,真的是最好的答案,真的非常感謝你! – 2013-04-10 16:12:57

0

嗯...這是一種設計我害怕。你能描述一下你遇到的問題以及你想要達到的目標嗎?我認爲你需要在這裏重新設計一下你的設計。

+0

編輯原始帖子來描述我們正在嘗試做什麼。 – 2009-05-06 15:57:08

0

你也可以切換到支持有狀態服務的WCF

+0

不幸的是,我們被這個版本的1.1框架'卡住'了 – 2009-05-06 16:14:14

相關問題