【问题标题】:Which the string values does expect the` CreateDefaultBuilder` method?哪些字符串值需要`CreateDefaultBuilder` 方法?
【发布时间】:2018-05-06 18:11:04
【问题描述】:

ASP.NET Core MVC 2.1

在文档here 我看到CreateDefaultBuilder(string[] args) 方法。但我没有看到它使用的任何例子。在这种情况下,该方法需要哪些参数?我可以传递这样的参数:"Hello", "World" 但这不太可能是该方法所期望的......

【问题讨论】:

标签: asp.net-mvc asp.net-core asp.net-core-mvc


【解决方案1】:

命令行参数通常用于在执行程序时将一些配置信息传递给程序。

一个典型的程序调用CreateDefaultBuilder 开始设置主机。

任何加载的配置都可能被命令行参数覆盖。

例如,以下内容直接取自带有一些或我自己的措辞的文档

假设像这样的 hosting.json 文件

{
    urls: "http://*:5005"
}

hosting.json 覆盖UseUrls 提供的配置首先配置,命令行参数配置其次:

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())
            .AddJsonFile("hosting.json", optional: true)
            .AddCommandLine(args) //<--
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseUrls("http://*:5000") //<--
            .UseConfiguration(config) //<--
            .Configure(app =>
            {
                app.Run(context => 
                    context.Response.WriteAsync("Hello, World!"));
            })
            .Build();
    }
}

要指定在特定 URL 上运行的主机,可以在执行 dotnet run 时从命令提示符传入所需的值。命令行参数覆盖hosting.json文件中的urls值,服务器监听8080端口:

dotnet run --urls "http://*:8080"

参考Hosting in ASP.NET Core

下面的文章也应该有帮助

ASP.NET Core – passing command-line arguments to Startup class

【讨论】:

  • 谢谢。是否可以使用它来初始化自定义嵌套设置保存在appsettings.json 文件中?例如,我可以重置这种配置的stuff值吗:{"foo":{"stuff":true}}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 2011-11-27
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多