You need to enable JavaScript to run this app. 能否在ASP.NET Web Forms中正常接收处理PUT类型HTTP请求?
优惠活动
大模型
产品
解决方案
定价
更多

能否在ASP.NET Web Forms中正常接收处理PUT类型HTTP请求?

问题本质定性

ASP.NET Web Forms 不存在框架层面不支持PUT、DELETE等自定义HTTP请求的限制,你遇到的HTTP Error 405.0 - Method Not Allowed错误,全部来自IIS请求处理管线的默认配置拦截,哪怕你已经尝试禁用WebDAV,也大概率是漏了其他管线模块的方法校验规则。

常见排查修复项
  • 检查IIS请求过滤模块的方法限制
    这个模块是很多人排查时容易漏的:它默认会对进入管线的所有请求做方法校验,哪怕后续你通过URL重写把www.test.com/Users/12345这类无扩展名请求转发到对应aspx页面,只要请求没通过前置的方法校验,就会直接返回405。你需要在web.config的system.webServer节点下配置requestFiltering规则,将PUT方法加入允许列表,或者直接放开未列名方法的访问权限。
  • 检查ASP.NET页面处理程序的映射方法限制
    默认安装的IIS中,针对.aspx资源映射的PageHandlerFactory处理程序,仅默认开放GET、POST、HEAD、DEBUG这几类HTTP方法。哪怕请求过滤模块放行了PUT请求,只要处理程序本身不允许PUT方法,依然会触发405。需要找到对应你使用的.NET框架版本的PageHandlerFactory映射配置,把PUT、DELETE这类需要的方法加到允许的动词列表中。
  • 彻底从管线中移除WebDAV相关模块
    很多人对WebDAV的禁用仅停留在关闭服务层面,实际上WebDAV的模块只要还挂在IIS的请求处理管线中,哪怕不处理实际请求,也会默认对PUT、DELETE方法做拦截校验。需要在web.config中显式移除管线中的WebDAVModule,同时移除对应的WebDAV请求处理程序,才算彻底关闭它的校验逻辑。
快速定位技巧

当你收到405错误时,查看响应头中的Allow字段,就能直接定位拦截来源:

  • 如果Allow字段仅返回GET, HEAD, POST, OPTIONS,说明是请求过滤模块或者页面处理程序的动词配置没放开
  • 如果Allow字段中包含PROPFIND, PROPPATCH, MKCOL等WebDAV专属方法,说明WebDAV模块依然在参与管线校验,没有被真正移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 17:36:04