使用jQueryAjax更改大小写调用WebMethod

时间:2018-11-11 18:53:07

标签: asp.net ajax iis asp.net-ajax

我使用ajax(简化)有以下请求:

<asp:TextBox ID="DealNumber" runat="server" Width="100px" ToolTip="Deal (aka OPG)">
</asp:TextBox>
<Ajax:AutoCompleteExtender 
  ID="AutoCompleteExtender2"
  runat="server"
  TargetControlID="DealNumber"
  ServiceMethod="GetDealNumberList"
  ServicePath="/ws/WebServices.asmx"/>

和/ws/WebServices.asmx上(对不起我的.VB):

 <System.Web.Script.Services.ScriptMethod(UseHttpGet:=True)>
 <System.Web.Services.WebMethod>
 Public Function GetDealNumberList(prefixText As String, count As Integer, contextKey As String) As System.String()
return {"Test " & PrefixText & " " & ContextKey}
end function

现在,进行典型的F12网络跟踪,ajax报告:

Invalid method name &#39;getdealnumberlist&#39;,  method names are case sensitive.   The method name &#39;GetWTNumberList&#39; with the same name but different casing was found.

谁以及为什么要更换外壳?如果我修改我的.asmx可以正常使用。

2 个答案:

答案 0 :(得分:0)

不确定到底是什么引起了该问题,但是很久以前我遇到了这个问题,同时仍然使用webforms页面和AJAX回调从Web服务(ASMX)返回内容。我通过将MessageName属性和方法名以小写形式放在WebMethodAttribute内来解决此问题,例如以下示例:

<ScriptMethod(UseHttpGet:=True)>
<WebMethod(MessageName:="getdealnumberlist")>
Public Function GetDealNumberList(prefixText As String, count As Integer, contextKey As String) As String()
    Return {"Test " & PrefixText & " " & ContextKey}
End Function

当直接测试Web服务方法时,有时也会出现此问题,例如输入http://localhost:XXXX/path/to/webservicename.asmx/GetDealNumberList之类的网址。

答案 1 :(得分:0)

在这个令人讨厌的问题中,我找到了答案,这很琐碎。

在Visual Studio中,当使用Option Compare Binary Option Compare Text时,我的印象是只会影响代码生成。我错了。不确定为Web服务和/或AJAX创建中间代码的方法是什么,但是添加Option Compare Text可解决骆驼问题。

我个人认为这是(可生存的)错误。