如何解决Blazor上的“ TypeError:无法提取”错误?

阿齐祖尔(M. Azyoksul)

我正在尝试将Blazor应用程序中的HTTP请求发送到ASP.NET Core API。我到处都有断点。API控制器上的action方法返回后,应用程序立即给出异常。我对.NET总体上很熟悉,但是我无法解读错误消息。

Blazor http呼叫:

var response = await _httpClient.GetStreamAsync($"Customer/GetAllCustomers");

ASP.NET Core API Controller操作:

[HttpGet]
[Route("GetAllCustomers")]
public async Task<IEnumerable<Customer>> GetAllCustomersAsync()
{
    return await _service.GetAllCustomersAsync();
}

错误堆栈:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: TypeError: Failed to fetch
WebAssembly.JSException: TypeError: Failed to fetch
  at System.Net.Http.WebAssemblyHttpHandler.doFetch (System.Threading.Tasks.TaskCompletionSource`1[TResult] tcs, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x301ab40 + 0x00a30> in <filename unknown>:0 
  at System.Net.Http.WebAssemblyHttpHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2ff3590 + 0x00174> in <filename unknown>:0 
  at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2ff1e98 + 0x00160> in <filename unknown>:0 
  at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2fc8a98 + 0x00182> in <filename unknown>:0 
  at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered (System.Threading.Tasks.Task`1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) <0x301ff08 + 0x00134> in <filename unknown>:0 
  at System.Net.Http.HttpClient.FinishGetStreamAsync (System.Threading.Tasks.Task`1[TResult] getTask) <0x2ffa720 + 0x000cc> in <filename unknown>:0 
  at WebClient.Services.LectureVideoService.GetAllLectureVideos (Content.Data.Enums.LessonType lessonType) [0x00040] in D:\AlbidersSoftware\CSharp\Albiders Content MS\Albiders\WebClient\Services\LectureVideoService.cs:21 
  at WebClient.Pages.MathAccList.OnInitializedAsync () [0x00026] in D:\AlbidersSoftware\CSharp\Albiders Content MS\Albiders\WebClient\Pages\MathAccList.razor:18 
  at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync () <0x2bed718 + 0x0013a> in <filename unknown>:0 
  at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2e3a0b0 + 0x000b6> in <filename unknown>:0 
Fei Han

未处理的异常呈现组件:TypeError:无法获取

WebAssembly.JSException:TypeError:无法获取

我做了一个测试,以从我的Blazor WebAssembly应用程序发出使用测试数据的操作方法请求,这对我而言很有效。

[Route("[controller]")]
[ApiController]
public class CustomerController : ControllerBase
{
    [HttpGet]
    [Route("GetAllCustomers")]
    public async Task<IEnumerable<Customer>> GetAllCustomersAsync()
    {
        //for testing purpose

        return new List<Customer> { new Customer { Id = 1, Name = "Test1" }, new Customer { Id = 2, Name = "Test2" } };

        //return await _service.GetAllCustomersAsync();
    }
}

GetAllCustomers.razor

@page "/getallcustomers"
@using BlazorWasmApp1.Shared
@inject HttpClient _httpClient

<h3>Customer List</h3>

@if (customers == null)
{
    <p><em>Loading...</em></p>
}
else
{
    <table class="table">
        <thead>
            <tr>
                <th>Id</th>
                <th>Name</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var customer in customers)
            {
                <tr>
                    <td>@customer.Id</td>
                    <td>@customer.Name</td>
                </tr>
            }
        </tbody>
    </table>
}


@code {
    private Customer[] customers;

    protected override async Task OnInitializedAsync()
    {
        //call external API
        //_httpClient.BaseAddress = new Uri("https://localhost:44312/");


        //your API action would return a collection of Customer
        //you can try to call .GetFromJsonAsync<Customer[]>() to get the expected data
        //rather than get stream
        customers = await _httpClient.GetFromJsonAsync<Customer[]>($"Customer/GetAllCustomers");
    }
}

测试结果

在此处输入图片说明

要解决此问题,请尝试:

  1. 在浏览器开发人员工具的“网络”选项卡中检查您的请求的URL,并确保您正在请求更正端点

  2. 如果您的ASP.NET Core Web API项目托管在单独的站点上,请确保已配置并启用CORS以允许来自Blazor WebAssembly应用程序的请求,并确保API正在运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何解决错误?

来自分类Dev

在ubuntu上安装devstackkg时如何解决此错误

来自分类Dev

如何解决Gulp上的缩小错误?

来自分类Dev

如何解决MySQL Workbench上的这些行错误?

来自分类Dev

如何解决SPA上的“ x-cache:cloudfront错误”

来自分类Dev

在Google Colab上安装Beam时如何解决错误

来自分类Dev

如何解决类中分配端点上的错误请求?

来自分类Dev

如何解决Flutter上的Pod安装错误?

来自分类Dev

如何解决MySQL Workbench上的这些行错误?

来自分类Dev

如何解决 OJ 上的“运行时错误”

来自分类Dev

Firebase身份验证:如何解决“ TypeError:无法读取null的属性'getIdToken'”错误

来自分类Dev

如何解决Vue-Formulate无法解决组件错误

来自分类Dev

如何解决“无法解决groupBy”错误消息?

来自分类Dev

如何解决Eclipse错误?

来自分类Dev

如何解决MMUMapper错误?

来自分类Dev

如何解决此错误?

来自分类Dev

如何解决以下错误?

来自分类Dev

如何解决NSAppleMusicUsageDescription错误

来自分类Dev

如何解决UndefinedBehaviorSanitizer错误?

来自分类Dev

如何解决错误:MethodNotAllowedHttpException

来自分类Dev

如何解决Stackoverflow错误?

来自分类Dev

如何解决实施错误?

来自分类Dev

如何解决越界错误?

来自分类Dev

如何解决NopCommerce错误?

来自分类Dev

如何解决交易错误?

来自分类Dev

如何解决此错误?

来自分类Dev

如何解决BackgroundUploadAsync错误?

来自分类Dev

如何解决此错误?

来自分类Dev

如何解决错误gradle?