You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WebClient UploadString的PUT方法更新数据时遇405错误求助

解决WebClient UploadString报405 Method Not Allowed错误

嘿,遇到405错误通常意味着服务器拒绝了你用PUT方法发送的请求,咱们一步步来排查解决:

1. 先给请求加上正确的Content-Type头

你发送的是JSON格式的请求体,但WebClient的UploadString默认不会自动设置Content-Type: application/json,服务器可能因为无法解析请求体而拒绝PUT请求。添加这个关键请求头试试:

var syncClient = new WebClient();
string URI = "https://test-khalid.herokuapp.com/v1/roles/de988992-4db8-4f75-884b-3dba893310e6";
syncClient.Headers.Add("authorization", "invalid-token");
// 新增这行,明确告诉服务器请求体是JSON格式
syncClient.Headers.Add("Content-Type", "application/json");
Response.Write(syncClient.UploadString(URI, "PUT", "{\"title\":\"Shomaail Title 1\", \"role_type\":\"3\" }"));

2. 确认服务器端点是否真的支持PUT方法

有些API设计里,更新资源可能用POST而非PUT,或者后端路由根本没开放该路径的PUT权限。你可以先用Postman或curl这类工具单独测试一下:

curl -X PUT "https://test-khalid.herokuapp.com/v1/roles/de988992-4db8-4f75-884b-3dba893310e6" \
-H "authorization: invalid-token" \
-H "Content-Type: application/json" \
-d '{"title":"Shomaail Title 1", "role_type":"3" }'

如果curl也返回405,那基本是服务器端的配置问题,得去确认API文档或者后端是否允许PUT请求访问这个路径。

3. 排查跨域(CORS)配置问题

如果你的代码是在浏览器环境下运行(比如ASP.NET Web Forms前端),服务器的CORS策略可能没把PUT加入允许的HTTP方法列表里,这种情况需要后端调整CORS配置,开放PUT方法的跨域访问权限。

4. 排除Token权限的干扰(虽然你用的是invalid-token)

有时候权限验证失败会被服务器伪装成405错误,如果你有有效的测试Token,可以替换掉invalid-token再试一次,排除权限拦截导致的问题。


内容的提问来源于stack exchange,提问作者Shomaail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:14:52