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

如何在ASP.NET Core中根据配置条件启用UseIISIntegration

解决方案

你可以通过两种方式实现根据配置条件调用UseIISIntegration:

方案一:提前手动构建配置

先手动加载和CreateDefaultBuilder一致的配置源,拿到配置值后再决定是否调用UseIISIntegration:

// 手动构建配置,匹配CreateDefaultBuilder的默认加载逻辑
var configBuilder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
    .AddEnvironmentVariables()
    .AddCommandLine(args);

var configuration = configBuilder.Build();

var hostBuilder = WebHost
    .CreateDefaultBuilder(args)
    .UseConfiguration(configuration) // 将手动构建的配置传入主机构建器
    .UseKestrel()
    .UseStartup<Startup>();

if (configuration.GetValue<bool?>("appSettings:UseWindowsAuthentication") == true)
{
    hostBuilder.UseIISIntegration();
}

var host = hostBuilder.Build();
await host.RunAsync();

方案二:直接从WebHostBuilder获取已加载的配置

WebHost.CreateDefaultBuilder会自动加载默认配置源(appsettings.json、环境变量等),你可以通过GetConfiguration()扩展方法在构建主机前获取配置:

var hostBuilder = WebHost
    .CreateDefaultBuilder(args)
    .UseKestrel()
    .UseStartup<Startup>();

// 从主机构建器中获取已加载的配置
var configuration = hostBuilder.GetConfiguration();
if (configuration.GetValue<bool?>("appSettings:UseWindowsAuthentication") == true)
{
    hostBuilder.UseIISIntegration();
}

var host = hostBuilder.Build();
await host.RunAsync();

第二种方案更简洁,复用了CreateDefaultBuilder的默认配置加载逻辑,无需手动重复配置源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:15:02