首页 > 解决方案 > 哪些字符串值需要`CreateDefaultBuilder` 方法?

问题描述

ASP.NET 核心 MVC 2.1

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

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

解决方案


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

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

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

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

假设这样的hosting.json文件

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

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

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。命令行参数覆盖了 hosts.json 文件中的 urls 值,服务器监听 8080 端口:

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

参考ASP.NET Core 中的托管

以下文章也应该有所帮助

ASP.NET Core – 将命令行参数传递给 Startup 类


推荐阅读