当消费WebService时,我得到了以下错误:
URL意外以/myMethodName结尾,请求格式无法识别
如何解决这个问题?
当消费WebService时,我得到了以下错误:
URL意外以/myMethodName结尾,请求格式无法识别
如何解决这个问题?
当前回答
尽管我发现90%的信息(在试图找到解决这个错误的方法时)告诉我将HttpGet和HttpPost添加到配置中,但这对我来说并不奏效…反正对我来说也说不通。
我的应用程序运行在很多服务器上(30多个),我从来没有为其中任何一个服务器添加过这个配置。在。net 2.0或。net 4.0下运行的应用程序的版本。
我的解决办法是重新注册ASP。NET对抗IIS。
我使用下面的命令行来实现这一点…
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
其他回答
在html中,你必须将调用包含在一个带有GET的表单中
<a href="/service/servicename.asmx/FunctionName/parameter=SomeValue">label</a>
您还可以使用POST,其操作是web服务的位置,并通过输入标记输入参数。
还有SOAP和代理类。
我使用下面的代码行来解决这个问题。在web中编写以下代码。配置文件
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
我在本地主机开发时没有这个问题。然而,一旦我发布到一个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服务器不支持函数重载
极好的。
情况2 -同样的问题可以出现)在我的情况下,问题是由于以下一行:
<webServices>
<protocols>
<remove name="Documentation"/>
</protocols>
</webServices>
它在服务器上工作得很好,因为直接调用webservice函数——但是如果你在调试环境中直接从。net运行服务,并且想要手动测试运行该函数,则会失败。