Asp.net HTTP客户端putAsync(错误404方法不允许)
我尝试使用托管在远程服务器上的WEB API更新对象。我很好地恢复了对象,但在更改时,答案给出了404方法不允许。我在附近同事的一台机器上测试了我的服务。它工作得很好。进行配置或其他操作需要什么? 多谢各位Asp.net HTTP客户端putAsync(错误404方法不允许),asp.net,httpclient,Asp.net,Httpclient,我尝试使用托管在远程服务器上的WEB API更新对象。我很好地恢复了对象,但在更改时,答案给出了404方法不允许。我在附近同事的一台机器上测试了我的服务。它工作得很好。进行配置或其他操作需要什么? 多谢各位 client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); Htt
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage responsse = client.PutAsJsonAsync("api/Collaborateurs/" + coll.matricule_collaborateur, coll).Result;
if (responsse.IsSuccessStatusCode) {
}
错误:
{StatusCode: 405, ReasonPhrase: 'Method Not Allowed', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Thu, 12 Nov 2015 14:28:10 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Content-Length: 1343
Allow: GET
Allow: HEAD
Allow: OPTIONS
Allow: TRACE
Content-Type: text/html
}}
众所周知,WebDAV会干扰动词PUT。如果服务器上存在WebDAV而您未使用它,请尝试卸载它。您可能还需要与远程服务器的管理员联系。PUT有时会被网络交换机/路由器阻止。也就是说,你可能无法用代码来解决这个问题。尝试改用POST。我使用angularjs作为WEB客户端API,我得到了一种错误405-飞行前的响应具有无效的HTTP(选项)。已经有很多类似的问题,但我无法解决我的问题。您可以在中看到我的帖子,然后可能会在服务器(宿主)端(由路由器或目标服务器配置的管理员)简单地禁止PUT(和OPTIONS?)请求。就像我说的,你不能用任何代码做任何事情,试着让托管提供商为你允许这些。你为什么不考虑用邮政代替呢?此外,您还可以尝试其他不禁止PUT请求的托管提供程序。我在本地主机中测试服务器,但无法配置webconfig.cs。Is POST还可以与我的功能一起更新,其优点是什么,下面是我的更新服务:这只是一个与REST规范兼容的约定。POST和PUT-in性能或任何东西之间没有实际差异。只需将代码中的单词“PUT”替换为单词“POST”(在angular中使用$http.POST,[HttpPost]作为控制器属性)。如果您使用的是本地IIS,并且可以更改配置,则可以启用PUT in applicationhost.config(将“PUT”添加到允许的请求列表中),并按照DonO的建议禁用webDAV。如果更改PUT-->post:我无法加载资源:服务器响应状态为415(不支持的媒体类型)