当消费WebService时,我得到了以下错误:

URL意外以/myMethodName结尾,请求格式无法识别

如何解决这个问题?


当前回答

我也得到这个错误与apache mod-mono。看起来webservice的文档页在linux中还没有实现。但是尽管出现了这个错误,web服务仍然正常工作。您应该通过在url的末尾添加?WSDL来看到它,即http://localhost/WebService1.asmx?WSDL

其他回答

我在本地主机开发时没有这个问题。然而,一旦我发布到一个web服务器,web服务返回一个空(空白)的结果,我看到我的日志中的错误。

我通过设置我的ajax contentType来修复它:

"application/json; charset=utf-8"

并使用:

JSON.stringify()

在我张贴的物体上。

var postData = {data: myData};
$.ajax({
                type: "POST",
                url: "../MyService.asmx/MyMethod",
                data: JSON.stringify(postData), 
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    console.log(data);
                },
                dataType: "json"
            });

在我的情况下,我有一个重载的函数,导致这个异常,一旦我改变了我的第二个函数的名称,它运行正常,猜web服务器不支持函数重载

我使用下面的代码行来解决这个问题。在web中编写以下代码。配置文件

<configuration>
    <system.web.extensions>
       <scripting>
       <webServices>
       <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
     </scripting>
   </system.web.extensions>
</configuration>

确保您禁用了自定义错误。这可以掩盖代码中的原始问题:

改变

<customErrors defaultRedirect="~/Error" mode="On">

to

<customErrors defaultRedirect="~/Error" mode="Off">

我也得到这个错误与apache mod-mono。看起来webservice的文档页在linux中还没有实现。但是尽管出现了这个错误,web服务仍然正常工作。您应该通过在url的末尾添加?WSDL来看到它,即http://localhost/WebService1.asmx?WSDL