Добавление строки в список с помощью await в Startup.cs - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь асинхронно получить идентификатор пользователя Active Directory в файле startup.cs. В конце списка вернуть нулевое значение.

  • ASP. NET Веб-приложение Core 3.1
  • Visual Studio 2019

Это код У меня есть

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);

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 апреля 2020

Я решил это, выполнив следующие шаги:

Первый Я добавил эту строку кода в верхней части Startup.cs

public List<string> listData = new List<string>();

Во-вторых, в in ConfigurationServices Я добавил этот код ;

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

И на третьем шаге я добавил string данные к List<string>;

  listData.Add(mylanid);

И это сработало. Спасибо

...