Собственная ошибка в. NET Core Blazor WebAssembly - PullRequest
0 голосов
/ 04 февраля 2020

Моя задача - запустить команду CLI (в системе клиента) и показать результат пользователю в веб-приложении. [предположим, веб-файл cmd.exe ]

Основываясь на чтении о возможностях WebAssembly, я использовал. NET CORE Blazor WebAssembly для выполнения этой задачи. Но при использовании System.Diagnostics.ProcessStartInfo в клиенте выдается ошибка времени выполнения Собственная ошибка = Не удается найти указанный файл .

Пожалуйста, дайте мне знать, если мое понимание WebAssembly неправильно. Также, предложите, как я мог выполнить sh задачу?

Код, используемый на странице Razor:

protected override async Task OnInitializedAsync()
{
    quiz = await Http.GetJsonAsync<List<QuizItem>>("Quiz");

    // My actual code...
    string process = @"C:\Windows\System32\cmd.exe", arguments = "start", workingFolder = ".";
    System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo {
        FileName = process, Arguments = arguments, WorkingDirectory = workingFolder,
        CreateNoWindow = false, UseShellExecute = false,
        RedirectStandardError = true, RedirectStandardOutput = true,
    };
    System.Diagnostics.Process proc = System.Diagnostics.Process.Start (startinfo);
    if (proc == null) throw new Exception ($"Unable to execute '{process}'");
}

Журнал консоли для справки:

enter image description here

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Разрешения Blazor ограничены браузером javascript песочницей, поэтому вы не можете делать ничего, чего не можете делать и в javascript. Запуск процессов - один из них.

1 голос
/ 04 февраля 2020

Прежде всего, приложение Blazor WebAssembly не является. NET приложением CORE.

Вы не можете выполнять команды CLI в приложении Blazor WebAssembly, которое более или менее идентично области действия JavaScript и ограничения. Приложение Blazor WebAssembly является однопоточным и работает в той же песочнице JavaScript. В JavaScript вы не можете получить доступ к файловой системе пользователя, что означает, что вы не сможете сделать это с помощью приложения WebAssembly.

Я не уверен, что понимаю тебя. Если вы хотите отобразить данные, полученные с сервера, почему вы не можете отобразить их в элементах Html, таких как поле ввода, например, c. ?

...