C# 如何在ASP.NET核心MVC应用程序中访问命令行参数?

C# 如何在ASP.NET核心MVC应用程序中访问命令行参数?,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我的目标是稍后在其中一个控制器中使用来自命令行的参数(即用户名+令牌) 解释了许多有用的设置,但没有说明如何实际使用除--environment之外的自定义参数 我找到了将命令行参数传递到的方法,但没有找到将其传递到控制器的方法 查看后,我无法正确地将参数传递给控制器类(示例文件还将程序类和启动类合并在一起,因此我不确定如何在我自己的代码中处理) 最终,我需要在应用程序开始时配置一些值,这个值需要稍后由控制器方法访问。我们也非常感谢能够实现这一点的任何替代方案。ASP.NET Core附带内

我的目标是稍后在其中一个控制器中使用来自命令行的参数(即用户名+令牌)

  • 解释了许多有用的设置,但没有说明如何实际使用除
    --environment
    之外的自定义参数
  • 我找到了将命令行参数传递到的方法,但没有找到将其传递到控制器的方法
  • 查看后,我无法正确地将参数传递给控制器类(示例文件还将程序类和启动类合并在一起,因此我不确定如何在我自己的代码中处理)

最终,我需要在应用程序开始时配置一些值,这个值需要稍后由控制器方法访问。我们也非常感谢能够实现这一点的任何替代方案。

ASP.NET Core附带内置的,应该通过构造函数参数用于依赖项解析

我找到了将命令行参数传递到的方法,但没有找到将其传递到控制器的方法

这个例子已经具备了您所需要的一切。见:

.ConfigureServices(services => services
                .AddSingleton(new ConsoleArgs(args))
此行将
ConsoleArgs
实例注册为DI容器的单例。 然后它可以用作任何类中的依赖项。类似链接示例中的
Startup
类:

// args will be resolved  using DI container
public Startup(IHostingEnvironment env, ConsoleArgs args)
{      
  ...
因此,对于控制器类,请执行相同的操作:

public class YourController : Controller
{
    public YourController(ConsoleArgs args)
    {
        //use args here or store it in private variable
    }
}

这是有道理的,但我希望允许其他人使用
donet myapp.dll
从命令行部署web应用程序,而无需进入并修改文件。这种方法行吗?(也不确定是否相关,但我不是在IIS Express中运行,而是在自定义docker容器中运行)您如何托管?自我主持?IIS?Owin?@Amy在docker容器中自我托管。它不是Visual Studio自动生成的,我已经编写了自己的Dockerfile等。理想情况下,有人会键入
docker run-e“USERNAME=un”image
,容器会使用传入的用户名运行此应用程序。