絕對在我的智慧結束在這裏。這應該很簡單。在創建新用戶帳戶的頁面中,我們有一個只有少許可用用戶的數據庫。爲了簡化獲取新用戶的電子郵件地址的正確性,我們希望使用自動完成擴展文本框。ASP.Net AutoCompleteExtender VB WebMethod沒有觸發 - 爲什麼?
現在我知道WebMethods正在工作,因爲我有一個級聯下拉鍊接到另一個頁面中的Web方法。
由於我剛剛開始在這個頁面上,代碼很簡單。
頁面本身:
<cc1:ToolkitScriptManager ID="ScriptManager2" runat="server"/>
<p></p> Please enter new user's Email:
<asp:TextBox ID="txtUser" runat="server" />
<cc1:AutoCompleteExtender runat="server" ID="autUser" TargetControlID="txtUser"
ServiceMethod="ScanGALUsers" ServicePath="~/AutoScan.asmx"
MinimumPrefixLength="3" CompletionSetCount="150" /> <p></p>
.asmx文件很簡單:
<%@ WebService Language="VB" CodeBehind="~/App_Code/VB_Code/AutoScan.vb" Class="AutoScan" %>
的的WebMethod:
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class AutoScan
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Shared Function ScanGALUsers(ByVal strPrefix As String, ByVal intMaxCount As Integer) As String()
Dim arlResults As New ArrayList
Dim intCount As Integer
Dim dt As DataTable
Dim colParameters As New SortedList
SysDA.LogDebug("ScanGALUsers called with parameters: " & strPrefix & " and count of " & intMaxCount.ToString)
... Deleted for brevity ...
If intCount > 0 Then
Dim arrResults(intCount - 1) As String
arrResults = arlResults.ToArray(GetType(System.String))
Return arrResults
Else
Return Nothing
End If
End Function
End Class
我還沒有得到的LogDebug聲明。我已經使用了所有相同的樣板代碼(繼承,'WebService'標籤等),在其他WebMethod中進行了相應的Class類名稱更改,但這確實讓我難以置信。
我錯過了什麼,我甚至沒有使它的方法?
您可以檢查Fiddler(或FireBug /其他替代品)並查看是否有正在對服務器進行的實際呼叫? – Jonas 2011-05-12 18:33:35
這裏的限制性很強的環境(軍事基地)。無法安裝未獲批准的工具。它似乎並沒有進行調用,因爲我在方法中設置了斷點,並且它永遠不會到達那裏。 (在不同的WebMethod *中執行相同的操作*)* – David 2011-05-12 18:52:22
調用asmx文件可能實際上正在完成,但是調用的結果沒有通過,導致404或500.如果我是你,我會檢查電話是否正在發生,如果他們是,他們的http響應代碼是什麼。 編輯:Chrome是否獲得批准?它具有類似的功能。 能夠看到客戶端和服務器之間的流量的東西真的很方便,像這樣的問題。 – Jonas 2011-05-12 18:54:28