[英]Read local/static file in Blazor Wasm
我的项目是在Blazor WASM中创建的(我不想使用 Blazor 服务器)
我想从 wwwroot 读取 XSD 个文件:
在我的 XsdService.cs 中 - c# class 我正在尝试:
string pathToXsd = Path.Combine("plcda","extPL_r2.xsd");
string transformataHTML = System.IO.File.ReadAllText(pathToXsd);
但是,我总是收到错误:
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".
那么是否有机会将自定义/静态/本地文件包含到 Blazor WASM 中? 即使应用程序处于离线状态也能阅读它们吗?
创建对文件的 Http GET 调用。 将 Blazor 视为 SPA 应用程序。 运行您的应用程序所需的所有文件都已下载到用户浏览器中。 图像等其他所有内容均应要求获取。 就像浏览器请求图像一样。
@inject HttpClient _client
@code {
async Task GetXDSFile()
{
var byteOfTheFile = await _client.GetByteArrayAsync("plcda/extPL_r2.xsd");
}
}
此示例只是将文件作为字节数组获取。 其他版本的 Get 可能更适合您,例如GetStreamAsync
。
在 .NET Core 6 中,您可以将提供程序映射添加到客户端项目的 program.cs 中,以提供 static 文件。
例如,我需要加载一个 3d model(.obj、.mtl 文件):
Blazor WASM 客户端专用项目:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.StaticFiles;
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".obj", "application/obj");
provider.Mappings.Add(".mtl", "application/mtl");
builder.Services.Configure<StaticFileOptions>(options =>
{
options.ContentTypeProvider = provider;
});
await builder.Build().RunAsync();
如果你有一个 asp.net 核心托管项目,你可以简单地将它放在服务器项目的 program.cs 文件中,而不需要添加 nuget package 引用。
Blazor WASM Asp.net 核心托管项目:
using Microsoft.AspNetCore.StaticFiles;
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".babylon", "application/javascript");
provider.Mappings.Add(".obj", "application/obj");
provider.Mappings.Add(".mtl", "application/mtl");
builder.Services.Configure<StaticFileOptions>(options =>
{
options.ContentTypeProvider = provider;
});
var app = builder.Build();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.