如何从 Blazor WebAssembly 中的目录读取文件

azz*_*123 2 c# file webassembly asp.net-core blazor

我目前正在开发 .NET Standard 2.1 Blazor WebAssembly 应用程序。我尝试从 wwwroot 目录读取文件路径

Blazor WebAssembly 应用程序不是 Asp.NET Core 托管的。

在此输入图像描述

我尝试从我的Main方法中读取所有以 .js 结尾的文件路径Program.cs,如下所示:

var filePaths = ReadWwwRootJSFilePaths();
private static string[] ReadWwwRootJSFilePaths()
        {
            Console.WriteLine("CurrentDirectory: " + Directory.GetCurrentDirectory());
            var dir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "js");
            Console.WriteLine("dir: " + dir);
            var files = Directory.GetFiles(dir);
            foreach (string file in files)
            {
                Console.WriteLine("file: " + file);
            }
            return files;
        }
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,我只在浏览器中收到一条错误消息:System.IO.DirectoryNotFoundException

在此输入图像描述

你知道如何解决这个问题吗?您知道如何从wwwrootBlazor WASm(非 ASP.NET Core 托管)应用程序中的目录读取文件路径吗?

也许我还不太了解 Blazor WebAssembly(不是 ASP.NET Core 托管)的概念。实际上可以使用 C# .NET Core 功能吗?

Isa*_*aac 7

是的,您只需对 wwwroot 中的文件执行 HTTP 调用即可。

要查看此操作的实际完成情况,请创建一个 WebAssembly 独立项目,其中 FetchData 调用位于 wwwroot 中的 json 文件。这是一些代码:

protected override async Task OnInitializedAsync()
    {
        forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
    }
Run Code Online (Sandbox Code Playgroud)

  • 这实际上应该是“await Http.GetFromJsonAsync” (2认同)