我正在使用带有ASP.NET Core托管的Blazor Web程序集。 我已将基本网址设置为“ /”
我想将图像从URL转换为字节数组 所以我正在使用下面的代码进行转换
string imageUrl = "https://homepages.cae.wisc.edu/~ece533/images/frymire.png";
var imageBytes = await File.ReadAllBytesAsync(imageUrl);
但是Blazor Web Assembly在运行时出现以下错误
blazor.webassembly.js:1爆击:Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer [100]未处理的异常呈现组件:找不到路径“ https:/homepages.cae.wisc.edu的一部分” /~ece533/images/frymire.png”。 System.IO.DirectoryNotFoundException:找不到路径“ /https:/homepages.cae.wisc.edu/~ece533/images/frymire.png”的一部分。在System.IO.FileStream..ctor(System.String路径,System.IO.FileMode模式,System.IO.FileAccess访问,System.IO.FileShare共享,System.Int32 bufferSize,System.Boolean匿名,System.IO。 FileOptions选项)在System.IO.FileStream..ctor(System.String路径,System.IO.FileMode模式,System.IO.FileAccess访问,System.IO.FileShare共享,System.Int32)中的<0x2de83f8 + 0x00258>在:0中bufferSize,System.IO.FileOptions选项)在System.IO.File.ReadAllBytesAsync的:0中<0x35ad778 + 0x0001c>(在SlashCare.Client的:0中的<0x35a9718 + 0x0003a>在0。 Microsoft.AspNetCore.Components.ComponentBase上D:\ Projects \ SlashCare \ Client \ Pages \ Admin \ Category \ CategoryComponent.razor.cs:72中的.Pages.Admin.Category.CategoryComponent.EditCategoryOpenAsync(System.Guid categoryId)[0x0011f] .CallStateHasChangedOnAsyncCompletion(System.Threading.Tasks.Task任务)<0x2f9d710 + 0x000da>在Microsoft.AspNetCore.Components.RenderTree.Renderer中为:0。 GetErrorHandledTask(System.Threading.Tasks.Task taskToHandle)在:0中的<0x2f9a270 + 0x000b6>
我在错误中看到/会自动添加到导致此问题的路径上
对这个问题有什么解决办法吗?
答案 0 :(得分:0)
您需要使用HttpClient从URL而非文件中获取数据。
答案 1 :(得分:0)
使用HTTP请求代替文件:
@inject HttpClient _httpClient
@code {
private async Task LoadFileAsync()
{
string imageUrl = "https://homepages.cae.wisc.edu/~ece533/images/frymire.png";
using var response = await _httpClient.GetAsync(imageUrl).ConfigureAwait(false);
var imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
}
}