【问题标题】:Why does AutoCompleteExtender WebService fail to be called when function is Shared?为什么函数共享时AutoCompleteExtender WebService调用失败?
【发布时间】:2011-12-14 23:11:05
【问题描述】:

我遇到了一个问题(现在已解决)但我不知道为什么...

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

【问题讨论】:

  • 您的方法是在页面中还是实际的 Web 服务 (asmx)?

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


【解决方案1】:

如果您正在调用页面方法,那么它必须是共享/静态的。但是当调用附加到 asmx 服务的方法时,根据 John Saunders 在这个问题中的说法, Why are Static Methods not Usable as Web Service Operations in ASMX Web Services?,Web 方法不能被设计为共享/静态。

我不得不猜测两者都是检索页面与 Web 方法的管道中的设计限制。

引用 John Saunders 的回答中的相关部分..

答案是:因为你不能。

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

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

【讨论】:

  • 谢谢,应该搜索staticshared ! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
相关资源
最近更新 更多