3

在.NET Core 2 Web API應用程序中,我可以使用appsettings.json覆蓋配置urls,但是在official docs中他們引入了額外文件「hosting.json」,爲什麼?增加複雜性的意義何在?因爲appsettings.json已經足夠了,所以hosting.json有什麼意義

下面的代碼完全工作使用appsettings.json

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) 
    { 
     var config = new ConfigurationBuilder() 
      .SetBasePath(Directory.GetCurrentDirectory()) //see Side note below 
      .AddJsonFile("appsettings.json", optional: true) 
      .AddCommandLine(args) 
      .Build(); 

     return WebHost.CreateDefaultBuilder(args) 
      .UseConfiguration(config) 
      .UseStartup<Startup>() 
      .Build(); 
    } 
} 

appsettings.json內容:

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "Debug": { 
     "LogLevel": { 
     "Default": "Warning" 
     } 
    }, 
    "Console": { 
     "LogLevel": { 
     "Default": "Warning" 
     } 
    } 
    }, 
    "urls": "http://*:5005/" 
} 

旁註: 評論.SetBasePath(Directory.GetCurrentDirectory())將保持VS 2017年調試模式操作(適用手段launchSettings.json,並自動啓動網址),否則它不會。我猜它與CreateDefaultBuilder實現有關。

回答

-1

我認爲,hosting.json是專門用於asp.net核心應用程序託管的配置文件。 (如果您知道更多關於主機的信息)

WebHostBuilder直接將其密鑰與hosting.json文件映射,並且它不像我們在正常配置設置中那樣加載配置部分

根據附加在您的文章

使用配置配置主機鏈接。在以下示例中,可以選擇在hosting.json文件中指定 主機配置。從hosting.json文件加載的任何 配置可能會被 命令行參數覆蓋。

如果我們明確我們hosting.json那麼WebHostBuilder配置可以使用DOTNET命令進行修改。

例如

DOTNET運行--urls的 「http:// *:8080」

這將覆蓋從hostings.json文件的URL。

希望這可能會給出一些想法。

PC:hosting.json可以改名像myappsettings.json它可以 具有配置和虛擬主機生成器配置。

+0

要從命令行重寫hosting.json或任何[name] .json網址,它通過.AddCommandLine(args)完成,在這方面沒有什麼特別的關於hosting.json。 –

+0

我想重寫hosting.json。這就是文檔所說的。此外,它有道理hosting.json具有特定的主機配置其他像任何其他行話,如DB配置或日誌記錄或其他配置的詳細信息。 –

+0

這是非常常見的設計,每個應用程序只有一個配置文件。當用戶計劃部署應用程序時,跳轉不同的配置文件以調整或驗證配置參數並不好。 –

相關問題