【问题标题】:asp.net core 2 web api set hosting url from appsettingsasp.net core 2 web api 从 appsettings 设置托管 url
【发布时间】:2018-02-16 16:19:42
【问题描述】:

在 asp.net core 2 web api 上,我希望能够根据 appsettings.json 文件中的值设置我的 api 将侦听的 url(api 作为 Windows 服务运行)。我找不到实现它的方法,我怎样才能访问IConfiguration 的实例?

var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);

return WebHost.CreateDefaultBuilder(args)
    .UseContentRoot(pathToContentRoot)
    .UseStartup<Startup>()
    .UseUrls({value_from_appsettings})
    .Build()
    .RunAsService();

【问题讨论】:

  • This 可能会有所帮助。最终,您必须创建自己的 IConfiguration 实例。

标签: c# asp.net-core kestrel-http-server


【解决方案1】:

为了获得对配置的访问权限您进入WebHost.CreateDefaultBuilder 路径之前,您需要使用ConfigurationBuilder 构建您自己的IConfiguration 实例。

以您的问题为例,您可以使用以下内容:

var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);

var appSettingsConfiguration = new ConfigurationBuilder()
    .SetBasePath(pathToContentRoot)
    .AddJsonFile("appsettings.json")
    .Build();

return WebHost.CreateDefaultBuilder(args)
    .UseContentRoot(pathToContentRoot)
    .UseStartup<Startup>()
    .UseUrls(appSettingsConfiguration["Your:Value"])
    .Build()
    .RunAsService();

这在docs 中有所解释,示例使用hosting.json 文件来设置它。它还使用UseConfiguration,它允许您为例如指定一个值。 urls,会被自动提取。

【讨论】:

  • 我很难访问环境名称来添加 appSettings.{environment}.json 文件,我怎样才能访问它?
  • 试试this 寻找灵感。即Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")
  • 另一种方法是用同样的方法WebHostBuilderdoes it,但这需要先创建另一个 IConfiguration
猜你喜欢
  • 2020-11-23
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多