.NET 6中如何在构建器内获取当前环境以条件禁用授权
.NET 6 仅在开发环境注册授权绕过服务的实现方案
在WebApplication.CreateBuilder构建器阶段,你可以直接通过builder.Environment访问当前环境信息,无需等到构建完成后再获取。WebApplicationBuilder本身内置了IWebHostEnvironment实例,和后续app.Environment是同一个对象,完全适配.NET 6+的顶级语句风格。
具体实现代码
将服务注册逻辑包裹在环境判断语句中即可:
var builder = WebApplication.CreateBuilder(args); // 其他服务注册代码(如身份验证、授权策略配置等)... // 仅在开发环境注册 DisableAuthorization if (builder.Environment.IsDevelopment()) { builder.Services.AddSingleton<IAuthorizationHandler, DisableAuthorization>(); } var app = builder.Build(); // 后续中间件配置...
额外说明
- 除了
IsDevelopment(),还可以用IsStaging()、IsProduction()判断标准环境;如果是自定义环境名称,使用builder.Environment.IsEnvironment("CustomEnv")即可。 - 该方式完全替代旧的
Startup类模式,符合.NET 6+的极简项目结构设计。
内容的提问来源于stack exchange,提问作者geoCode
相关产品推荐
相关产品推荐

