从网址访问png图片时出现基本网址问题

时间:2020-07-08 07:25:33

标签: blazor blazor-webassembly

我正在使用带有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>

我在错误中看到/会自动添加到导致此问题的路径上

对这个问题有什么解决办法吗?

2 个答案:

答案 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);
    }
}