为什么当服务器没有抛出内部异常时,我会在客户端上"The remote server returned an error: (405) Method Not Allowed"?



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

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

相关内容

最新更新