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

Blazor WASM中PutAsJsonAsync发起POST请求而非PUT引发405错误

Blazor WASM中PutAsJsonAsync发起POST请求导致405错误的解决办法

可能的原因

  • 自定义DelegatingHandler或HTTP拦截器篡改了请求方法:如果项目中给HttpClient配置了自定义消息处理程序,可能在处理流程中把PUT请求修改为POST。
  • HttpClient全局配置异常:项目中的全局HTTP配置可能意外覆盖了请求方法。
  • 罕见框架行为:极少数情况下,Blazor WASM的HttpClient扩展方法可能因环境或依赖版本问题出现异常。

解决方案

1. 排查自定义消息处理程序

检查项目中是否存在类似的HttpClient配置:

builder.Services.AddScoped(sp => 
    new HttpClient(new CustomDelegatingHandler()) 
    { 
        BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) 
    });

查看CustomDelegatingHandler的SendAsync方法,确认没有将request.Method修改为HttpMethod.Post。

2. 手动构造PUT请求绕过扩展方法

直接使用SendAsync手动创建PUT请求,确保请求方法不会被篡改:

var request = new HttpRequestMessage(HttpMethod.Put, $"/subscriptions/{paymentId}");
request.Content = JsonContent.Create(new
{
    subscriptionId,
    quantity,
    successUrl,
    cancelUrl
});
var response = await _client.SendAsync(request);

3. 验证请求实际状态

打开浏览器开发者工具的Network标签,查看该请求的详细信息:

  • 确认请求方法确实为POST
  • 检查请求头中是否存在异常字段(比如X-HTTP-Method-Override),排查是否有服务器端方法覆盖的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:32:32