2011-10-25 66 views
2

我有一個問題(這是現在固定的),但我不知道爲什麼...爲什麼AutoCompleteExtender WebService在函數共享時無法調用?

我有一個Ajax AutoCompleteExtender有一個WebService方法來填充像

<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

您的方法是在頁面還是實際的Web服務(asmx)? –

回答

1

如果您正在調用頁面方法,那麼它必須是共享/靜態的。但是,在調用附加到asmx服務的方法時,根據約翰桑德斯在這個問題中, Why are Static Methods not Usable as Web Service Operations in ASMX Web Services?,web方法不能被設計共享/靜態。

我不得不猜測,這兩者都是檢索頁面與網頁方法的管道中的設計限制。

從約翰·桑德斯的回答引用的相關部分..

答案是:因爲你不能。

它不是這樣設計的。其設計是將創建一個web 服務類的實例,然後調用一個實例方法 。

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

+0

謝謝,本來應該搜索'static'以及'shared'! :) –

相關問題