在 Startup.cs 中使用等待将字符串添加到列表

Adding string to a List using await in Startup.cs

我正在尝试在 startup.cs 文件中异步获取 Active Directory 用户 ID。在末尾列出 return 空值。

这是我的代码

string mylanid = "";         

app.Run(async (context) =>
{
    if ((RuntimeInformation.IsOSPlatform(OSPlatform.Linux)))
    {
        ProcessStartInfo psi = new ProcessStartInfo();
        psi.FileName = "sh";
        psi.Arguments = "-c whoami";
        psi.UseShellExecute = false;
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;

        Process proc = new Process
        {
            StartInfo = psi
        };

        proc.Start();

        string output = proc.StandardOutput.ReadToEnd();

        proc.WaitForExit();

        mylanid = output;                   
    }
    else
    {
        mylanid = Environment.UserName;
    }

    List<returnedId> listData = new List<returnedId>();
    returnedId retrnTbl = new returnedId();
    retrnTbl.userRole = mylanid;
    listData.Add(retrnTbl);
});

如果我使用下面的代码而不是列表。它反映了正确的结果,但我希望将该字符串值存储在 List.

await context.Response.WriteAsync(mylanId);

感谢任何帮助。

我通过以下步骤解决了它;

首先我在 Startup.cs

的顶部添加了这行代码
public List<string> listData = new List<string>();

其次,在in ConfigurationServices我添加了这段代码;

services.AddSingleton<List<string>>(listData.ToList());

第三步,我将 string 数据添加到 List<string> ;

  listData.Add(mylanid);

它奏效了。谢谢