回答
答案是:因爲你不行。
它不是這樣設計的。設計是創建一個Web服務類的實例,然後調用一個實例方法。
我只能猜測爲什麼微軟這樣設計它。要知道肯定,你必須問他們。考慮:
- 允許靜態方法沒有特別的好處。任何你可以用靜態方法做的事情,你也可以用一個實例方法來做。
- A
[WebService]
類並不意味着某些恰好被用作Web服務的任意類。它意味着您爲暴露Web服務操作而創建的類。因此,不需要支持已經存在且已經有靜態方法的類。 - SOAP Header實現允許您的類包含來自
SoapHeader
類的派生類型的實例字段。該字段將填入傳入的SOAP頭並/或將包含要返回的SOAP頭。您無法使用靜態字段來執行此操作,因爲它會被每個請求覆蓋。
正如我所說的,這些都是猜測。這個問題的正確答案是,「你不能這樣做,因爲這就是微軟設計它的原因,如果你想知道他們爲什麼這樣設計,你需要問問他們」。
FWIW,我剛剛檢查,並沒有出現WCF允許靜態方法是操作。
當客戶端爲您的Web服務創建對象時,他們真正創建的是該Web服務的代理對象。此代理對象處理諸如爲您打開和關閉連接以及實際使用Web服務的所有開銷。靜態方法調用將很難管理。缺乏更好的單詞的「靜態代理」必須完成代理對象的實例在每次客戶端調用其中一個靜態方法時所做的所有事情,從而增加了大量開銷。
我很確定他在談論服務器端,而不是客戶端。 – 2009-08-11 22:47:23
我的答案以我認爲有助於解釋爲什麼服務器端的靜態方法無法工作的方式回答他的問題。只是說Web服務的設計是爲了他們不能不說,爲什麼他們是這樣設計的。 – 2009-08-11 22:49:41
但這不是原因。服務器上發生的事情與客戶端上發生的事情無關。客戶端代理和服務器端Web服務實例之間沒有對應關係。服務器端並不僅僅是因爲客戶端代理是實例化的。基於這個推理,我將不得不倒下。 – 2009-08-11 22:53:44
- 1. 爲ASMX Web服務
- 2. ASMX Web服務
- 3. Web服務互操作性
- 4. WCF服務而不是ASMX Web服務?
- 5. 從另一個.asmx Web服務調用.asmx Web服務
- 6. ASP.NET ASMX Web服務
- 7. Web服務ASMX - WCF
- 8. 爲什麼Web服務中的功能無法正常工作?
- 9. 從WCF服務調用asmx Web服務
- 10. 可能的時間Web服務操作
- 11. Java Web服務操作
- 12. 爲什麼我不能從Web服務
- 13. Silverlight4調用ASMX Web服務
- 14. 爲什麼在靜態頁面方法中使用帶有Ajax的Web服務?
- 15. GET正常Web服務和REST Web服務的操作差異
- 16. 爲asmx服務動態獲取Web方法
- 17. asmx web服務的限制
- 18. web服務c中的單向操作#
- 19. 爲什麼這個SOAP Web服務不能按預期工作?
- 20. .asmx web服務與ssl
- 21. asmx web服務,json,javascript/jquery?
- 22. asmx web服務授權
- 23. 調試asmx web服務
- 24. asmx .net 2.0 web服務
- 25. ASMX Web服務公開類
- 26. 錯誤從ASMX Web服務
- 27. 爲什麼SOAP Web服務
- 28. 拉,操作和使用web服務
- 29. WCF Web服務不工作
- 30. 在java中使用.asmx Web服務?
順便說一句,你知道微軟現在認爲ASMX網絡服務是「傳統技術」,並且他們已經停止修復那裏的錯誤嗎?你應該使用WCF。 – 2009-08-11 22:49:10
我沒有意識到這一點:(。 – Tarik 2009-08-11 23:24:44
Atarikg,WCF在它的實現中支持基本的webservices以及更多的東西(這是一個巨大的,完整的框架),它非常漂亮,我不確定靜態方法在我的頭頂部被允許在WCF服務中 – 2009-08-11 23:52:04