0

我有一对正在测试的应用程序;一个是 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 吗?

4

1 回答 1

1

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

于 2013-10-25T19:56:33.157 回答