我遇到了问题(现在已修复),但我不知道为什么......
我有一个带有WebService方法的Ajax AutoCompleteExtender,可以像
一样填充<WebMethod()> _
Public Shared Function populateACE(prefixText As String) As List(Of String)
然而这不起作用 - 我放了一个断点,它甚至没有被击中。然而...
<WebMethod()> _
Public Function populateACE(prefixText As String) As List(Of String)
..确实有效(唯一的区别不是Shared
)。
足够公平,但为什么?如果您拥有类的实例,那么您可以访问它的Shared
方法;如果您没有类的实例,那么您可以访问它的Shared
方法。幕后发生了什么?
答案 0 :(得分:1)
如果您正在调用页面方法,那么它必须是Shared / static。但是当调用附加到asmx服务的方法时,在这个问题上与John Saunders一致, Why are Static Methods not Usable as Web Service Operations in ASMX Web Services?,网页方法无法按设计共享/静态。
我必须猜测,在检索网页与网络方法的管道中,两者都是设计限制。
引用约翰桑德斯回答的相关部分。
答案是:因为你做不到。
它不是那样设计的。设计是网络的一个实例 将创建服务类,然后将创建一个实例方法 调用。
..但仍然值得看看完整的答案。