在 Blazor Wasm 中读取本地/静态文件

Mac*_*ski 1 c# progressive-web-apps blazor blazor-client-side blazor-webassembly

我的项目是在Blazor WASM 中创建的(我不想使用 Blazor 服务器)

我想从 wwwroot 读取 XSD 文件:

在此处输入图片说明

在我的 XsdService.cs - C# 类中,我正在尝试:

string pathToXsd = Path.Combine("plcda","extPL_r2.xsd");
string transformataHTML = System.IO.File.ReadAllText(pathToXsd);
Run Code Online (Sandbox Code Playgroud)

但是,我总是收到错误:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Could not find a part of the path "/plcda/extPL_r2.xsd".
System.IO.DirectoryNotFoundException: Could not find a part of the path "/plcda/extPL_r2.xsd".
Run Code Online (Sandbox Code Playgroud)

那么是否有机会将自定义/静态/本地文件包含到 Blazor WASM 中?即使应用程序离线也能阅读它们?

Zso*_*des 6

创建对文件的 Http GET 调用。将 Blazor wasm 视为 SPA 应用程序。运行您的应用程序所需的所有文件都下载到用户浏览器中。其他一切如图像都是根据要求获取的。就像浏览器请求图像一样。

@inject HttpClient _client

@code {
    async Task GetXDSFile()
    {
        var byteOfTheFile = await _client.GetByteArrayAsync("plcda/extPL_r2.xsd");
    }
}
Run Code Online (Sandbox Code Playgroud)

此示例仅将文件作为字节数组获取。其他版本的 Get 可能更适合您GetStreamAsync