C# 当使用RestSharp时,我在帖子上找不到MethodNotFound,但回复认为这是一个GET?
我正在使用RestSharp,并且第一次发布了一篇帖子,我收到了很多GET请求,这些请求都可以正常工作)。Rest服务是用python编写的,但我认为这对这个问题并不重要。这是我的密码:C# 当使用RestSharp时,我在帖子上找不到MethodNotFound,但回复认为这是一个GET?,c#,restsharp,methodnotfound,C#,Restsharp,Methodnotfound,我正在使用RestSharp,并且第一次发布了一篇帖子,我收到了很多GET请求,这些请求都可以正常工作)。Rest服务是用python编写的,但我认为这对这个问题并不重要。这是我的密码: var client = new RestClient { BaseUrl = _baseUrl }; var request = new RestRequest("nameOfPostMethod", Method.POST); request.RequestFormat = DataForm
var client = new RestClient { BaseUrl = _baseUrl };
var request = new RestRequest("nameOfPostMethod", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new { name, description });
request.AddHeader("accept", "application/json");
var response = client.Execute(request);
以下是我得到的原始响应:
[{"name": "405 - Method Not Allowed", "data":
[["Class", "werkzeug.exceptions.MethodNotAllowed"], ["Category", "Client Error"],
["Code", "405"], ["Name", "Method Not Allowed"], ["request.method", "GET"],
["request.url", "http://myUrl/nameOfPostMethod"], ["error.message", "405 Method
Not Allowed"], ["error.description", null]]}]
在我面前突出的是这一行,它似乎认为我在做一个GET而不是一个POST:
["request.method", "GET"]
["error.message", "405 Method Not Allowed"]
有没有关于我在这里做错了什么的建议
更新:
我下载了fiddler,并试图查看发生了什么,有趣的是,当我查看标题时,它确实显示了GET。以下是我在fiddler中看到的屏幕截图:
我甚至试图改变:
client.Execute(request);
到
但它仍然显示出同样的东西。有什么想法吗?这是跨域请求吗?如果是这样,那么我怀疑RestSharp在执行实际的httppost之前发出了飞行前请求。如果不允许跨域POST,则“405方法不允许”是对CORS请求的正确响应。我不确定该屏幕截图是否显示了所有HTTP头。它是否在GET中发送访问控制-*头?这将证实这一点。事实证明这是Web服务器端的重定向问题,因此与Rest无关
我已请求删除该问题以避免任何混淆。您是否使用类似fiddler的工具来捕获请求,以查看它是否正在执行get而不是post?REST服务是否有一个同名的get方法?@Ben Robinson-我尝试使用fiddler,但它确实显示为get。根据上面的代码,你知道为什么会发生这种情况吗?@BenRobinson-我附上了一个fiddler屏幕截图,让你看看我看到了什么
client.Post(request);