Blazorアプリから休憩サービスを呼び出すにはどうすればいいですか?

blazor rest

質問

デフォルトのBlazorアプリケーション(V0.5.1)を作成した後、FetchData.cshtmlページが表示され、ローカルの.jsonファイルからデータが取得されます

@functions {
    WeatherForecast[] forecasts;

    protected override async Task OnInitAsync()
    {
        forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
    }

    class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public int TemperatureF { get; set; }
        public string Summary { get; set; }
    }
}

これは正常に動作します。ただし、これを変更して.net core rest Web APIから同じデータを取得すると、 Http.GetJsonAsyncへのHttp.GetJsonAsyncがハングします。完了しないというエラーはありません。

    protected override async Task OnInitAsync()
    {
        forecasts = await Http.GetJsonAsync<WeatherForecast[]>(
            "http://localhost:5000/api/weatherforecast/");
    }

私は何が欠けていますか?

受け入れられた回答

APIとサイトが異なるポートで実行されているため、ほとんどの場合、CORSの問題が発生しています。


人気のある回答

私はCorsを有効にする必要がありました。 どのようにしてASP.NET Core MVCで原点通過要求(CORS)を有効にするのですか?デフォルトのWebサービスコードにいくつかの行を追加することは、このトリックでした。

        public void ConfigureServices(IServiceCollection services)
        {
            // add this
            services.AddCors(); 

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            // and this
            app.UseCors(builder =>
            {
                builder.WithOrigins("http://localhost:5000")
                       .WithMethods("GET", "POST")
                       .AllowAnyHeader();
            });

            app.UseMvc();
        }


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow