ASP.NET Core WebAPI部署IIS后PUT请求返回500错误如何解决
IIS部署后PUT请求返回500错误解决方案
核心原因大概率是IIS默认启用的WebDAV模块优先级高于你配置的请求过滤规则,会主动拦截PUT、PATCH、DELETE等RESTful常用谓词,你已经在请求过滤中放开了PUT权限,只需要补充WebDAV相关的移除配置即可:
将以下配置添加到你的web.config的<system.webServer>节点下:
<modules> <remove name="WebDAVModule" /> </modules> <handlers> <remove name="WebDAV" /> <!-- 如果你用的是其他版本的.NET运行时,调整对应的handler名称和runtimeVersion参数即可 --> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers>
其他排查建议
- 确认测试服务器的.NET运行时版本、应用程序池托管模式和本地开发环境完全一致,避免框架差异导致的隐性报错
- 临时开启IIS站点的详细错误输出,可直接查看500错误的具体堆栈信息,快速定位根因
- 你的示例代码中接口标记了
async,如果实际业务中UpdateUser是异步方法,需要添加await关键字,否则异步上下文错误也可能导致部署后出现500错误
内容的提问来源于stack exchange,提问作者user1250264
相关产品推荐
相关产品推荐

