Web服务方法名称无效

当我尝试从javascript调用webmethod时,我收到以下错误“Web服务方法名称无效”

System.InvalidOperationException:SaveBOAT Web服务方法名称无效。 在System.Web.Services.Protocols.Protocol.Partocol.Protocol.Partocol.Potocol.Potocol.Initialize()处于System.Web.Services.Protocols.Protocol.SetContext(Type类型,HttpContext上下文,HttpRequest请求,HttpResponse响应)的System.Web.Services.Protocols.Protocol.Server上。 Create(Type type,HttpContext context,HttpRequest request,HttpResponse response,Boolean&abortProcessing)

HTML代码:

 

JS代码:

 function AddMyBoat() { var b = document.getElementById('HdnControlId').value; jQuery.ajax({ type: "GET", url: "/AllService.asmx/SaveBOAT", data: { Pid: b }, contentType: "application/text", dataType: "text", success: function(dd) { alert('Success' + dd); }, error: function(dd) { alert('There is error' + dd.responseText); } }); } 

C#代码(AllService.asmx文件中的Web方法)

 [WebMethod] public static string SaveBOAT(int Pid) { // My Code is here //I can put anythng here SessionManager.MemberID = Pid; return ""; } 

我尝试了在Stack Overflow和ASP.NET站点上找到的所有解决方案。但是它们都没有为我工作。

这是一个愚蠢的错误。 从方法声明中删除“静态”。

 [WebMethod] public string SaveBOAT(string Pid) { SessionManager.MemberID = Pid; return ""; } 

在我的情况下,错误是Web服务方法被声明为“私有”而不是“公共”

尝试使用这个,我认为数据类型应该是JSON

  jQuery.ajax({ type: "POST", // or GET url: "/AllService.asmx/SaveBOAT", data: { Pid: b }, contentType: "application/json; charset=utf-8", dataType: "json" success: function(dd) { alert('Success' + dd); }, error: function(dd) { alert('There is error' + dd.responseText); } }); 

并在C#代码中将Pid更改为字符串

  [WebMethod] public static string SaveBOAT(string Pid) { SessionManager.MemberID = Pid; return ""; } 

你添加了ServiceReferenceServiceReference ? 检查一次。 根据您的评论,我可以告诉您该怎么做

我也遇到了类似的问题。 该解决方案包括检查与确保所有名称相关的所有内容,参数在正确响应的情况下正确传递。 确保我们在UI页面中调用的Web方法名称拼写正确,数据,数据类型正确等等。在我的情况下,我在ajax调用中拼错了Web方法名称。 一旦我找到并正确更正了名称,它就能正常工作。
对于Ex:在.asmx类文件中,这是方法名称“IsLeaseMentorExistWithTheSameName”,但是当我从UI调用时,这就是我调用的方式:

 var varURL = <%=Page.ResolveUrl("~/Main/BuildCriteria.asmx") %> + '/IsLeaseMentorExistWithSameName'; 

请注意,缺少单词“The”。 这是一个错误,我纠正了,所以它工作正常。

在我的情况下,我复制了另一个asmx文件,但没有将class属性更改为asmx文件本身中新类的名称(右键单击asmx文件 – >查看标记)