.NET Core Blazor WebAssembly 中的本机错误
Native error in .NET Core Blazor WebAssembly
我的任务是 运行 CLI 命令(在客户端系统中)并在 Web 应用程序上向用户显示输出。 [假设,基于网络的 cmd.exe]
基于对 WebAssembly 功能的阅读,我使用 .NET CORE Blazor WebAssembly 来完成任务。但是在Client中使用System.Diagnostics.ProcessStartInfo会抛出运行time error Native error= Cannot find the specified file.
如果我对 WebAssembly 的理解有误,请告诉我。另外,建议我如何完成任务?
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}'");
}
控制台日志供参考:
blazor 的权限受到浏览器 javascript 沙盒的限制,因此您不能做任何您在 javascript 中也不能做的事情。启动进程就是其中之一。
首先,Blazor WebAssembly 应用程序不是 .NET CORE 应用程序。
您不能在范围和限制方面与 JavaScript 大致相同的 Blazor WebAssembly 应用程序中执行 CLI 命令。 Blazor WebAssembly 应用程序是单线程的,并在 JavaScript 的相同沙箱中运行。在 JavaScript 中,您无法访问用户的文件系统,这意味着您将无法使用 WebAssembly 应用程序执行此操作。
我不确定我明白你的意思。如果要显示从服务器取回的数据,为什么不能在输入框列表框等Html元素中显示呢?
我的任务是 运行 CLI 命令(在客户端系统中)并在 Web 应用程序上向用户显示输出。 [假设,基于网络的 cmd.exe]
基于对 WebAssembly 功能的阅读,我使用 .NET CORE Blazor WebAssembly 来完成任务。但是在Client中使用System.Diagnostics.ProcessStartInfo会抛出运行time error Native error= Cannot find the specified file.
如果我对 WebAssembly 的理解有误,请告诉我。另外,建议我如何完成任务?
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}'");
}
控制台日志供参考:
blazor 的权限受到浏览器 javascript 沙盒的限制,因此您不能做任何您在 javascript 中也不能做的事情。启动进程就是其中之一。
首先,Blazor WebAssembly 应用程序不是 .NET CORE 应用程序。
您不能在范围和限制方面与 JavaScript 大致相同的 Blazor WebAssembly 应用程序中执行 CLI 命令。 Blazor WebAssembly 应用程序是单线程的,并在 JavaScript 的相同沙箱中运行。在 JavaScript 中,您无法访问用户的文件系统,这意味着您将无法使用 WebAssembly 应用程序执行此操作。
我不确定我明白你的意思。如果要显示从服务器取回的数据,为什么不能在输入框列表框等Html元素中显示呢?