Web 服务方法名称无效
Web Service method name is not valid
当我尝试从javascript调用Webmethod时,我收到以下错误"Web服务方法名称无效"
System.InvalidOperationException: SaveBOAT Web Service 方法名称无效。 at System.Web.Services.Protocols.HttpServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response) at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
网页代码 :
<asp:LinkButton runat="server" ID="lnkAddBoat" OnClientClick="javascript:AddMyBoat(); return false;"></asp:LinkButton>
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 网站上找到的所有解决方案,但没有一个对我有用。
这是一个愚蠢的错误。
从方法声明中删除Static
关键字。
[WebMethod]
public string SaveBOAT(string Pid)
{
SessionManager.MemberID = Pid;
return "";
}
就我而言,我复制了另一个 asmx 文件,但没有将类属性更改为 asmx 文件本身中新类的名称(右键单击 asmx 文件 -> 查看标记)
在我的情况下,错误是 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 "";
}
我也面临类似的问题。该解决方案包括检查与确保所有名称、参数正确传递相关的所有内容,因为许多人已经响应。确保我们在UI页面中调用的Web方法名称拼写正确,数据,数据类型正确等。就我而言,我在 ajax 调用中拼错了 web 方法名称。一旦我找到并正确更正了名称,它就可以正常工作。
例如:在.asmx类文件中,这是方法名称"IsLeaseMentorExistWithTheSameName",但是当我从UI调用时,这就是我的调用方式:
var varURL = <%=Page.ResolveUrl("~/Main/BuildCriteria.asmx") %> + '/IsLeaseMentorExistWithSameName';
请注意,缺少单词"The"。这是一个错误,我纠正了,所以效果很好。
正如Sundar Rajan所说,检查参数是否正确。此错误的实例是因为我未能传递任何参数(作为 POST 请求中的主体),并且 asmx web 方法需要命名参数,因此绑定逻辑无法将请求与方法名称匹配,即使名称本身实际上是正确的。
[WebMethod]
public object MyWebMethod(object parameter)
如果请求正文中没有parameter
,则会收到此错误。
你是否添加了ServiceReference
类。 检查一次。根据您的评论,我可以告诉您该怎么做
我遇到了这个问题,因为我的肥皂方法有一个List<string>
参数。找不到使其与数组参数一起使用的方法;所以只需将参数转换为&
分隔的字符串(例如 val1&val2&val3
),并将参数转换为服务方法中的数组。
在我的例子中,其中一个 WebService 接收参数被称为 aId
。当我从javascript调用它时,我发送了正确的Id值,但是发送变量的名称被错误地称为bId
。所以我只需要重命名 WebService 调用,像以前一样保留正确的值,然后更改变量名称。
- 为什么方法.options对select无效
- Web 服务方法名称无效
- 修复无效JSON的最有效方法
- JavaScript 方法一个有效,另一个无效
- GWT JSNI 方法与本机 JS:“无效标签”
- 错误:参数 4 的值无效.属性“方法”:意外属性
- JQuery 不返回值?或者该方法无效
- 如果对 JSONP 请求的服务器响应未正确包装在函数中,是否有任何方法可以覆盖“无效标签”错误
- 使用atob()方法时出现无效字符错误
- 这些在JavaScript中向现有对象添加属性的方法有何不同(一种有效,一种无效)
- 重置方法对流星对象无效
- 从对象中取出具有无效(NaN、blank等)值的键的最佳方法
- 将无效日期转换为时间对象的最简单方法
- 用jquery预处理html的一种方法有效,但为什么另一种方法无效't
- 控制器之间共享服务的脏检查,一种方法有效,另一种方法无效
- 向drupal服务器发送JSON会导致无效方法;在目标C中
- 为什么Date.parse()方法对无效字符串"foo 01.01.01"有效
- Angular -无效模型值的解决方法
- 不能使输入无效(对象不支持属性或方法'$setValidity')
- 使用Last进行身份验证.提供了无效的方法签名