Rest “为什么我会得到”的答案;远程服务器返回错误:(405)方法不允许";当服务器没有引发内部异常时,是否在客户端上?

Rest “为什么我会得到”的答案;远程服务器返回错误:(405)方法不允许";当服务器没有引发内部异常时,是否在客户端上?,rest,iis,asp.net-web-api,.net-3.5,visual-studio-debugging,Rest,Iis,Asp.net Web Api,.net 3.5,Visual Studio Debugging,我有一对正在测试的应用程序;一个是ASP.NET Web API应用程序(.NET 4.5.1);我有几个RESTful方法可以从.NET3.5c#桌面应用程序调用。我测试的前两个RESTful方法运行良好;除了用于在存储库的构造函数中加载数据的查询之外,所有RESTful方法的代码都是相同的 我在服务器/Web API应用程序中设置了log4net。在while循环中读取服务器中的记录(准确地说是记录#270),服务器到达while循环的末尾(没有更多记录),并且从不进入catch块,但是客户

我有一对正在测试的应用程序;一个是ASP.NET Web API应用程序(.NET 4.5.1);我有几个RESTful方法可以从.NET3.5c#桌面应用程序调用。我测试的前两个RESTful方法运行良好;除了用于在存储库的构造函数中加载数据的查询之外,所有RESTful方法的代码都是相同的

我在服务器/Web API应用程序中设置了log4net。在while循环中读取服务器中的记录(准确地说是记录#270),服务器到达while循环的末尾(没有更多记录),并且从不进入catch块,但是客户端显示

“远程服务器返回错误:(405)方法不允许”

错误对话框,没有返回任何数据

因此,服务器/webapi似乎可以正常工作,但显然存在一些问题。没有从服务器保存log4net条目,尽管我在catch块中已对此进行了设置:

catch (Exception ex)
{
    log.Error(ex.Message);
}
(我在log4net日志文件中有一些关于以前异常的条目,所以它可以正常工作/设置)

逐步检查客户端中的代码,这是它失败的一行:

var webResponse = (HttpWebResponse)webRequest.GetResponse();

同样,这与用于其他工作方法的代码完全相同。这个含糊不清的“远程服务器返回错误:(405)方法不允许”公报的真正含义是什么?抛出/显示该异常的是客户机的catch块,但它来自哪里?它似乎来自Web API应用程序和客户端应用程序之间——它可能来自IIS吗?

你能检查一下两边使用的http动词是否相同吗。通常,当服务器期望POST但请求尝试执行GET时,返回405。
同时发布您的控制器代码和用于使用该服务的代码也会有所帮助。

我不能再多说了,因为您的问题没有太多关于您的代码或环境(如iss版本等)的信息。您如何知道API正在被调用。您是否尝试通过附加到进程来使用fiddler和debuggin服务调用API。此外,我不确定您使用的是什么httpverb,但这可能会有所帮助;它到达while read循环的末尾。只有这样它才会失败——但显然服务器上没有抛出异常,至少在该方法中没有,因为没有到达catch块,并且没有记录任何内容。