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

Azure及IIS部署API报405错误 本地正常页面无法访问如何解决

Web API部署到Azure/IIS触发405错误排查方案

405错误本质是请求所用的HTTP方法未被服务端允许,本地运行正常但部署后报错,基本为服务端模块拦截、配置不匹配导致,按以下步骤逐一排查即可:

1. 基础匹配校验

  • 核对请求使用的HTTP方法(GET/POST/PUT/DELETE/PATCH/OPTIONS等)和接口声明的方法特性完全一致,例如接口标注[HttpPost]时,PUT、DELETE类请求会被直接拦截。
  • 核对路由规则,确认部署环境的路由前缀、参数约束和本地配置完全一致,注意部分部署环境对路由大小写敏感,避免因大小写不匹配触发路由失效。

2. 移除WebDAV模块拦截

这是IIS、Azure App Service环境下最常见的405诱因,平台默认集成的WebDAV模块会拦截PUT、DELETE、PATCH等非GET/POST类请求,直接在项目根目录的web.config中添加配置移除该模块即可:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

3. 修正无扩展请求处理程序配置

默认的无扩展URL处理程序可能未开放全量HTTP方法权限,需手动在web.config中补充配置:

针对ASP.NET Framework项目

<system.webServer>
  <handlers>
    <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>
</system.webServer>

针对ASP.NET Core项目

确认AspNetCore模块配置未限制请求谓词:

<system.webServer>
  <handlers>
    <add name="aspNetCore" 
         path="*" 
         verb="*" 
         modules="AspNetCoreModuleV2" 
         resourceType="Unspecified" />
  </handlers>
</system.webServer>

4. 排查CORS预检请求拦截

前后端分离场景下,浏览器会在跨域请求前自动发送OPTIONS方法的预检请求,若CORS配置错误也会返回405:

  • 不要同时在代码层面和IIS/Azure门户层面重复配置CORS规则,避免规则冲突。
  • ASP.NET Core项目需注意CORS中间件的注册顺序,必须放在路由、授权中间件之前:
// 正确顺序示例
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(policy =>
    {
        policy.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
    });
});
// ... 其他服务注册
var app = builder.Build();
app.UseCors(); // 必须放在UseRouting之前
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.Run();

5. Azure环境专属排查

  • 在Azure门户的应用服务配置中开启失败请求跟踪,查看405请求的详细处理日志,定位具体拦截的模块。
  • 检查是否配置了WAF、API Management规则,部分默认防护规则会拦截非常规HTTP方法,按需调整规则即可。
  • 确认Azure应用的运行时栈版本和本地开发环境完全一致,避免因版本不兼容导致路由、处理程序加载异常。

6. IIS环境专属排查

  • 打开IIS管理器,找到对应站点的「处理程序映射」,选中项目对应的处理程序,在请求限制的谓词设置中,确认已开放所有需要使用的HTTP方法,或直接选择允许所有谓词。
  • 打开「请求筛选」模块,检查「HTTP谓词」列表,确认使用的请求方法没有被加入拒绝列表。

报错参考截图

405错误页面截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:18:34