我正在使用HttpClient进行POST请求,但是收到了405方法不被允许的错误。在Fiddler中捕获跟踪时,它以GET而不是POST方式发送出去!
using (var client = new HttpClient())
{
var url = AppSettingsUtil.GetString("url");
var response = client.PostAsJsonAsync(url, transaction).Result;
}
我知道async/await的问题。这个示例是为了展示问题而简化的。
是否有一些web.config或machine.config的设置可能会影响到这个问题?其他通过RestSharp发送的请求可以正确地发送POST。
以下是Fiddler捕获的内容。在Fiddler中重新运行跟踪也会返回405(如预期的那样)。手动将其切换为POST并从Fiddler中运行可以正常工作。
此外,也许因为方法被切换为GET,Fiddler中没有捕获到body,在Fiddler中必须手动粘贴JSON。
GET /*URL*/ HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: /*host*/
Connection: Keep-Alive