简体   繁体   English

如何从 program.cs 中的 appsettings 中读取 UrlPrefixes - asp.net core 3.1

[英]how to read UrlPrefixes from appsettings in program.cs - asp.net core 3.1

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseHttpSys(options =>
            {
                options.UrlPrefixes.Add("how to get url from appsettings");
            });
            webBuilder.UseStartup<Startup>();
        })
        //host as window service
        .UseWindowsService();
    }

appsettings config,应用设置配置,

"HttpSysOptions": {
    "UrlPrefix": "http://localhost:8099/"
}

Looks like I can use hostingContext.Configuration , but it won't available within UseHttpSys , how to do this?看起来我可以使用hostingContext.Configuration ,但它在UseHttpSys中不可用,该怎么做? Thanks!谢谢!

IWebHostBuilder.UseHttpSys(Action) consists of two parts: Registering the required services, and configuring the HttpSysOptions . IWebHostBuilder.UseHttpSys(Action)由两部分组成:注册所需的服务和配置HttpSysOptions You can split this up by registering only the required services and configuring the options yourself.您可以通过仅注册所需的服务并自己配置选项来拆分它。 And when you do that, you can access the hosting context:当你这样做时,你可以访问托管上下文:

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseHttpSys();
        webBuilder.ConfigureServices((context, services) =>
        {
            services.Configure<HttpSysOptions>(options =>
            {
                options.UrlPrefixes.Add(context.Configuration["HttpSysOptions:UrlPrefix"]);
            });
        });

        webBuilder.UseStartup<Startup>();
    })
    .UseWindowsService();

This should work:这应该有效:

public static IHostBuilder CreateHostBuilder(string[] args)
{
    var configuration = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", optional: true)
        .Build();

    string urlPrefix = configuration.GetSection("HttpSysOptions")["UrlPrefix"];
    return Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseHttpSys(options =>
            {
                options.UrlPrefixes.Add(urlPrefix);
            });
            webBuilder.UseStartup<Startup>();
        })
        //host as window service
        .UseWindowsService();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Asp.net core 6 Program.cs文件中appsettings.json的使用方法 - How to use appsettings.json in Asp.net core 6 Program.cs file 如何返回在 Program.cs ASP.Net core 6 中找不到 - How to return not found in Program.cs ASP.Net core 6 在 Program.cs 中使用 IWebHostEnvironment web host builder in ASP.NET Core 3.1 - Use IWebHostEnvironment in Program.cs web host builder in ASP.NET Core 3.1 如何从 ASP.NET Core 中的 Program.cs 访问 IWebHostEnvironment - How to access IWebHostEnvironment from Program.cs in ASP.NET Core ASP.NET Core 6 MVC:如何从 controller 访问 Program.cs 中定义的变量值? - ASP.NET Core 6 MVC : how to access a variable's value that is defined in Program.cs from a controller? ASP.NET 核心 Web API - 如何将 .NET 核心 5 中的 SetupSerilog 转换为 .NET 核心 6 Program.cs - ASP.NET Core Web API - How to convert SetupSerilog in .NET Core 5 to .NET Core 6 Program.cs ASP.NET 核心程序.cs配置 - ASP.NET Core program.cs configuration 避免在ASP.NET Core Program.cs中使用静态值 - Avoid static value in ASP.NET Core Program.cs 在 ASP.NET Core 6 Program.cs 中配置 EF - Configuring EF in ASP.NET Core 6 Program.cs 如何访问用户管理器<identityuser>来自 asp.net 核心 7.0 中 program.cs 中的 WebApplication 实例应用程序的实例</identityuser> - How to access UserManager<IdentityUser> instance from WebApplication instance app in program.cs in asp.net core 7.0
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM