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

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

如何解决这个问题?


当前回答

在html中,你必须将调用包含在一个带有GET的表单中

<a href="/service/servicename.asmx/FunctionName/parameter=SomeValue">label</a>

您还可以使用POST,其操作是web服务的位置,并通过输入标记输入参数。

还有SOAP和代理类。

其他回答

一个需要ContextKey的WebMethod,

[WebMethod]
public string[] GetValues(string prefixText, int count, string contextKey)

当此键未设置时,得到异常。

通过分配AutoCompleteExtender的键来修复它。

ac.ContextKey = "myKey";

极好的。

情况2 -同样的问题可以出现)在我的情况下,问题是由于以下一行:

<webServices>
  <protocols>
    <remove name="Documentation"/>
  </protocols>
</webServices>

它在服务器上工作得很好,因为直接调用webservice函数——但是如果你在调试环境中直接从。net运行服务,并且想要手动测试运行该函数,则会失败。

以我为例,当我从本地PC的Windows 10移动到安装Windows 2012的专用服务器时,出现了这个错误。 解决方案是添加到网络。配置以下行

<webServices>
        <protocols>
               <add name="Documentation"/>
        </protocols>
</webServices>

在html中,你必须将调用包含在一个带有GET的表单中

<a href="/service/servicename.asmx/FunctionName/parameter=SomeValue">label</a>

您还可以使用POST,其操作是web服务的位置,并通过输入标记输入参数。

还有SOAP和代理类。

尽管我发现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