Доступ к API контроллера MVC в Blazor не работает с .NET Core 3.0 - PullRequest
2 голосов
/ 09 октября 2019

Я пытаюсь настроить приложение на стороне сервера Blazor, но сталкиваюсь с проблемой чтения данных из моего API контроллера MVC. У меня есть контроллер для моей модели Study под названием StudyController. Когда я запускаю приложение Blazor, я могу получить доступ к данным json для моего маршрута GetAll () "/ Studies", но приложение Blazor не читает данные. Код ниже:

StudyController:

[Route("studies")]
[ApiController]
public class StudyController : ControllerBase
{
    private StudyRepository _ourCustomerRespository;

    public StudyController()
    {
        _ourCustomerRespository = new StudyRepository();
    }

    //[Route("Studies")]
    [HttpGet]
    public List<Study> GetAll()
    {
        return _ourCustomerRespository.GetStudies();
    }

}

Раздел функции страницы бритвы, пытающийся получить доступ к данным:

@functions {

IList<Study> studies = new List<Study>();

protected async Task OnInitAsync()
{
    HttpClient Http = new HttpClient();
    studies = await Http.GetJsonAsync<List<Study>>("/studies");
}
}

Код конфигурации Startup.cs:

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options => options.EnableEndpointRouting = false)
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

        services.AddControllers();

        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSingleton<WeatherForecastService>();


    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();

        app.UseStaticFiles();

        app.UseRouting();

        app.UseMvcWithDefaultRoute();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Кажется, проблема была в том, что OnInitAsync() больше не работает в последней версии Blazor. Я переключился на OnInitializedAsync() и эти данные были загружены правильно.

0 голосов
/ 10 октября 2019

Вы можете получить любое исключение, например «Предоставлен неверный URI запроса. URI запроса должен быть либо абсолютным URI, либо должен быть установлен BaseAddress».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...