Blazor Wasm部署后出现405错误:HTTP动词不被允许
问题分析与解决
这大概率是主机的配置问题,而非Blazor应用本身的问题——毕竟本地测试一切正常,说明你的应用PUT/DELETE请求的逻辑是没问题的,部署后出现405错误,核心原因是主机的Web服务器或安全策略拦截了PUT、DELETE这两种HTTP请求方法。
下面是具体的排查和解决步骤:
检查主机Web服务器的请求方法限制
- 若使用IIS:默认可能禁用了PUT/DELETE,可通过两种方式开启:
- 在IIS管理器的站点“请求筛选”功能中,添加允许PUT、DELETE动词;
- 在项目的web.config文件里,添加请求筛选规则,示例代码如下:
<system.webServer> <security> <requestFiltering> <verbs allowUnlisted="false"> <add verb="GET" allowed="true" /> <add verb="POST" allowed="true" /> <add verb="PUT" allowed="true" /> <add verb="DELETE" allowed="true" /> </verbs> </requestFiltering> </security> </system.webServer>
- 若使用Nginx:在站点配置的server或location块中,添加允许PUT、DELETE方法的配置:
allow_methods GET POST PUT DELETE; - 若使用Apache:检查站点根目录的.htaccess文件,确保没有限制PUT/DELETE,或者添加规则:
<Limit GET POST PUT DELETE> Allow from all </Limit>
- 若使用IIS:默认可能禁用了PUT/DELETE,可通过两种方式开启:
排查主机的安全插件/防火墙
很多主机自带的安全工具会默认拦截非GET/POST的HTTP方法,你需要登录主机控制面板,找到安全防护相关的设置,将PUT、DELETE加入允许的请求方法列表。快速验证应用路由(可选)
虽然本地正常,但可以再确认下Blazor API端点的特性是否正确:比如控制器方法上的[HttpPut]、[HttpDelete]特性有没有拼写错误,路由模板是否和前端请求的路径匹配。
内容的提问来源于stack exchange,提问作者A N
相关产品推荐
相关产品推荐

