【问题标题】:.NET , The remote server returned an error: (405) Method Not Allowed.NET,远程服务器返回错误:(405) Method Not Allowed
【发布时间】:2020-03-17 15:45:11
【问题描述】:

我使用以下代码调用了一个用 C# 编写并托管在 IIS 中的 Web 服务,但它返回错误

远程服务器返回错误:(405) 方法未启用

但是当我使用具有相同输入信息的 Postman 时,它可以正常工作。

var httpWebRequest = (HttpWebRequest)WebRequest.Create(url_to_post);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.KeepAlive = true;

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    streamWriter.Write(json_object);
    streamWriter.Flush();
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
    // return result;
}

【问题讨论】:

  • 您确定url_to_post 与您在 Postman 中的匹配吗?就服务器而言,它不知道是谁在调用它。只要请求采用适当的形式,它就会以同样的方式对待它。您需要弄清楚您的请求之间有什么不同。

标签: c# .net json iis


【解决方案1】:

首先,请捕获request fiddler并检查其响应服务器。

我们需要弄清楚 405 的来源。如果响应服务器是 HTTP API/2.0,那么它必须来自 http.sys。您可能需要检查您的请求 URL。

但是,如果响应服务器是 IIS。然后请启用失败的请求跟踪。 大多数情况下,IIS 将返回 405 错误,因为 IIS 使用了错误的处理程序,或者您的正确处理程序不允许 POST 方法。

所以请启用失败的请求跟踪并检查哪个模块/处理程序返回 405 错误。

https://docs.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis

请确保 WebDAV 处理程序未处理请求。并且已安装静态内容功能。您需要确保正确的处理程序正在处理请求,并且处理程序还允许 POST 方法。

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多