【问题标题】:ASP.Net AutoCompleteExtender VB WebMethod not firing - why?ASP.Net AutoCompleteExtender VB WebMethod 不触发 - 为什么?
【发布时间】:2011-05-12 18:24:45
【问题描述】:

绝对是我的智慧到此为止。这应该很简单。在创建新用户帐户的页面中,我们有一个包含少量允许用户的数据库。为了简化正确获取新用户的电子邮件地址,我们希望使用自动完成扩展文本框。

现在我知道 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" %>

网络方法:

<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 语句。我已经使用了在另一个 WebMethod 中工作的所有相同的样板代码(继承、“WebService”标签等),并对类名称进行了适当的更改,但这真的让我很难过。

我错过了什么,我什至没有做到这一点?

【问题讨论】:

  • 您能否检查 Fiddler(或 FireBug / 其他替代方案)并查看是否有对服务器的实际调用?
  • 这里的环境非常严格(军事基地)。无法安装未经批准的工具。它似乎没有进行调用,因为我在方法中设置了一个断点并且它永远不会到达那里。 (在不同的 WebMethoddoes 中执行相同操作)
  • 很可能实际上正在完成对 asmx 文件的调用,但调用的结果没有通过,导致 404 或 500。如果我是你,我会检查调用是否正在发生,如果是,它们的 http 响应代码是什么。编辑:Chrome 是否获得批准?它具有类似的功能。能够查看客户端和服务器之间的流量的东西对于此类问题非常方便。
  • 不管怎样,我可以在浏览器中手动启动该服务。
  • 查看系统偶数查看器时,我收到一条警告消息,提示“请求格式无法识别,因为 URL 意外以 '/ScanGALUsers' 结尾。”我尝试将 Web 方法的第二个参数的签名从整数更改为字符串,只是为了查看是否是它,但仍然没有。当我使用浏览器手动进入 webmethod 时,我收到了调试消息。非常烦人和令人费解。

标签: asp.net ajax vb.net autocompleteextender webmethod


【解决方案1】:

你解决过这个问题吗?您是否尝试过从 WebService 声明中删除 Shared?这以前对我有用(我不知道为什么!)。

【讨论】:

  • 是的 - 我将 web 服务归结为只返回一些硬编码条目,删除了“共享”,它仍然没有触发。我会把它归咎于这里的安全策略和一些我无法控制的环境设置,除了 other webservices 工作...... 非常令人沮丧 - 但感谢你的想法.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2010-10-06
相关资源
最近更新 更多