将命令行参数传递给ASP.NET核心中的Startup类

Pass command-line arguments to Startup class in ASP.NET Core(将命令行参数传递给ASP.NET核心中的Startup类)
本文介绍了将命令行参数传递给ASP.NET核心中的Startup类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过命令行传入了参数

private static int Main(string[] args)
{
    const string PORT = "12345"    ;

    var listeningUrl = $"http://localhost:{PORT}";

    var builder = new WebHostBuilder()
        .UseStartup<Startup>()
        .UseKestrel()
        .UseUrls(listeningUrl);

    var host = builder.Build();
    WriteLine($"Running on {PORT}");
    host.Run();

    return 0;
}
其中一个参数是日志记录输出目录。如何将此值放入Startup类中,以便在收到请求时可以写出此目录?

我希望避免使用静态类。提供价值的服务是正确的方式吗?如果是,我如何将服务注入到我的中间件中?

推荐答案

您应该能够使用AddCommandLine()扩展。首先安装Nuget包Microsoft.Extensions.Configuration.CommandLine并确保您拥有正确的导入:

using Microsoft.Extensions.Configuration;

现在更新您的Main方法以包括新配置:

var config = new ConfigurationBuilder()
    .AddJsonFile("hosting.json", optional: true) //this is not needed, but could be useful
    .AddCommandLine(args)
    .Build();

var builder = new WebHostBuilder()
    .UseConfiguration(config)  //<-- Add this
    .UseStartup<Startup>()
    .UseKestrel()
    .UseUrls(listeningUrl);

现在将命令行选项视为配置:

dotnet run /MySetting:SomeValue=123

并读入代码:

var someValue = Configuration.GetValue<int>("MySetting:SomeValue");

这篇关于将命令行参数传递给ASP.NET核心中的Startup类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)