Blazor 앱에서 휴식 서비스를 호출하려면 어떻게해야합니까?

blazor rest

문제

기본 Blazor 앱 (V0.5.1)을 만든 후 로컬 .json 파일에서 데이터를 가져 오는 FetchData.cshtml 페이지를 얻습니다

@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 웹 API에서 같은 데이터를 얻으려면이 값을 변경하면 Http.GetJsonAsync 호출이 중단됩니다. 완료되지 않은 오류는 없습니다.

@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; }
    }
}

내가 뭘 놓치고 있니?

수락 된 답변

아마도 API와 사이트가 다른 포트에서 실행되기 때문에 CORS 문제가 발생했을 것입니다.


인기 답변

Cors를 사용 하려면 ASP.NET Core MVC에서 CORS (Cross-Origin Request)를 어떻게 활성화합니까? 기본 웹 서비스 코드에 몇 줄을 추가하는 것이 트릭을 만들었습니다.

        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
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.