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

如何在非开发环境为管理员返回开发者异常页面作为IActionResult

实现方案

第一步:调整Startup.cs中间件配置

你需要先全局注册开发者异常页中间件,保证生产环境也能调用它的渲染逻辑,调整后的配置如下:

// 全局注册开发者异常页,所有环境生效
app.UseDeveloperExceptionPage();

if (env.IsDevelopment())
{
    // 开发环境不需要额外的错误跳转逻辑
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

// 后续其他中间件(路由、授权、静态文件等)保持原有顺序不变
// ...

这里注意中间件顺序不能乱,UseDeveloperExceptionPage 要放在 UseExceptionHandler 前面,保证异常可以正常冒泡到开发者异常页中间件。

第二步:完善Error.cshtml.cs的处理逻辑

首先引入需要的命名空间:

using Microsoft.AspNetCore.Diagnostics;

然后修改OnGet方法的逻辑如下:

public IActionResult OnGet()
{
    if (Request.Cookies["admin"] == ReadonlyJsonService.Root.adminCookie)
    {
        // 读取当前捕获的异常信息
        var exceptionHandlerFeature = HttpContext.Features.Get<IExceptionHandlerFeature>();
        if (exceptionHandlerFeature != null)
        {
            // 清除异常已处理标记,让异常继续向上传递
            HttpContext.Features.Set<IExceptionHandlerFeature>(null);
        }
        return new EmptyResult();
    }
    // 普通用户直接渲染默认的Error.cshtml页面
    return Page();
}

注意事项

  • 当前用Cookie做管理员校验的方式安全性较低,生产环境建议替换为框架自带的身份认证、角色校验逻辑,避免Cookie伪造带来的信息泄露风险
  • 开发环境下原有逻辑保持不变,默认直接展示开发者异常页,不会进入/Error路由逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:48:04