我有一对正在测试的应用程序;一个是 ASP.NET Web API 应用程序 (.NET 4.5.1);我有几个从 .NET 3.5 C# 桌面应用程序调用的 RESTful 方法。我测试的前两种 RESTful 方法运行良好;除了用于在存储库的构造函数中加载数据的查询之外,所有 RESTful 方法的代码都是相同的。
我在服务器/Web API 应用程序中设置了 log4net。在while循环中读取服务器中的记录(准确地说是记录#270),服务器到达while循环的结尾(没有更多记录),并且永远不会进入catch块,但是客户端显示
"The remote server returned an error: (405) Method Not Allowed"
错误对话框,不返回任何数据。
因此,服务器/Web API 似乎工作正常,单步执行,但显然有些不对劲。没有从服务器保存 log4net 条目,尽管我在 catch 块中对此进行了设置:
catch (Exception ex)
{
log.Error(ex.Message);
}
(而且我在 log4net 日志文件中确实有一些关于以前异常的条目,所以它工作/设置正确)。
单步执行客户端中的代码,这是它失败的行:
var webResponse = (HttpWebResponse)webRequest.GetResponse();
同样,这与用于其他工作方法的代码完全相同。这个模糊的“远程服务器返回错误:(405)方法不允许”公报的真正含义是什么?抛出/显示异常的是客户端的 catch 块,但它来自哪里?它似乎来自 Web API 应用程序和客户端应用程序 - 它可能来自 IIS 吗?