Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net HTTP客户端putAsync(错误404方法不允许)_Asp.net_Httpclient - Fatal编程技术网

Asp.net HTTP客户端putAsync(错误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

我尝试使用托管在远程服务器上的WEB API更新对象。我很好地恢复了对象,但在更改时,答案给出了404方法不允许。我在附近同事的一台机器上测试了我的服务。它工作得很好。进行配置或其他操作需要什么? 多谢各位

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(不支持的媒体类型)