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

ASP.NET Core Razor页面Post操作抛HTTP 405错误,OnPostAsync未执行

Razor Pages Post请求405错误排查与修复

核心原因及解决步骤

1. 缺失防伪造令牌验证

ASP.NET Core Razor Pages默认强制防伪造令牌校验,未携带令牌的Post请求会被直接拒绝并返回405。

修复方式:在表单内添加防伪造令牌,二选一即可:

  • 使用HTML辅助方法:
<form method="post">
    @Html.AntiForgeryToken()
    <input type="submit" value="Submit" />
</form>
  • 或使用Tag Helper属性:
<form method="post" asp-antiforgery="true">
    <input type="submit" value="Submit" />
</form>

注:正常情况下,method="post"的表单会自动注入令牌,但项目配置变更可能导致自动注入失效,手动添加即可解决。

2. 页面与模型命名不匹配

Razor Pages通过文件名绑定对应模型类,需确保:

  • 页面模型类SubmitTestModel对应的Razor页面文件名为SubmitTest.cshtml,且放置在项目默认的Pages目录下。

3. 端点路由未正确配置

检查项目启动文件(Program.cs或Startup.cs),确认已启用Razor Pages端点路由:

// Program.cs 示例代码
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();

var app = builder.Build();

// 省略其他中间件配置...

// 必须添加此代码以启用Razor Pages路由
app.MapRazorPages();

app.Run();

缺少app.MapRazorPages()会导致Post请求无法匹配到OnPostAsync方法。

4. 其他拦截因素排查

  • 检查自定义中间件/过滤器是否误拦截了Post请求;
  • 确认托管环境未限制HTTP Post方法的使用。

验证

完成上述操作后重新运行项目,提交表单时OnPostAsync方法将正常执行,405错误消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:05:18