为什么在共享函数时无法调用AutoCompleteExtender WebService?

时间:2011-10-25 13:41:17

标签: asp.net vb.net web-services asp.net-ajax

我遇到了问题(现在已修复),但我不知道为什么......

我有一个带有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方法。幕后发生了什么?

1 个答案:

答案 0 :(得分:1)

如果您正在调用页面方法,那么它必须是Shared / static。但是当调用附加到asmx服务的方法时,在这个问题上与John Saunders一致, Why are Static Methods not Usable as Web Service Operations in ASMX Web Services?,网页方法无法按设计共享/静态。

我必须猜测,在检索网页与网络方法的管道中,两者都是设计限制。

引用约翰桑德斯回答的相关部分。

  

答案是:因为你做不到。

     

它不是那样设计的。设计是网络的一个实例   将创建服务类,然后将创建一个实例方法   调用。

..但仍然值得看看完整的答案。