Blazor/.NET 8/Web API в проекте сервера Blazor не работает ⇐ C#
Blazor/.NET 8/Web API в проекте сервера Blazor не работает
Я начал новый проект Blazor с новой автоматической настройкой .NET 8.
Я пытаюсь разместить контроллер веб-API в своем серверном проекте и использовать функцию аутентификации личности ASP.NET, чтобы убедиться, что кто-то вошел в систему и т. д.
Вот настройка моего контроллера API:
[Route("api/[controller]")] общедоступный класс TestDataController: ApiController { частная среда IWebHostEnvironment только для чтения; общедоступный TestDataController (среда IWebHostEnvironment) { this.environment = окружающая среда; } [HttpGet] общедоступный IHttpActionResult Get() { строковый путь = Path.Combine(environment.WebRootPath); строка returnData = $"filename: {"1"} | путь: {путь}"; вернуть ОК (returnData); } } Тогда в моем клиентском проекте у меня есть такая настройка:
Program.cs в клиентском проекте:
builder.Services.AddHttpClient("WebAPI", клиент => client.BaseAddress = новый Uri(builder.Configuration["BaseAddress"])); builder.Services.AddScoped(sp => sp.GetRequiredService() .CreateClient("WebAPI")); Razor.cs
@page "/api-call" @using App.Client.Services @using System.Net.Http.Headers @using Syncfusion.Blazor.Buttons @используя System.Text.Json @inject IHttpClientFactory HttpClientFactory @inject CookieService CookieService @rendermode InteractiveWebAssembly ApiCall @if (APIValue!= ноль) { @APIValue } еще { Загрузка товаров... } @код { частная строка APIValue {get; набор; } защищенное переопределение асинхронной задачи OnInitializedAsync() { } частная асинхронная задача onToggleClick() { вар httpClient = HttpClientFactory.CreateClient("WebAPI"); //var cookie = await CookieService.GetCookieValue("YourCookieName"); // httpClient.DefaultRequestHeaders.Authorization = // новое AuthenticationHeaderValue("Bearer", cookie); пытаться { APIValue = ожидание httpClient.GetFromJsonAsync("TestData"); } catch (HttpRequestException ex) // Не удалось { Console.WriteLine("Произошла ошибка."); APIValue = $"ошибка {ex.Message}"; } catch (NotSupportedException) // Когда тип контента недействителен { Console.WriteLine("Тип контента не поддерживается."); } catch (JsonException) // Неверный JSON { Console.WriteLine("Неверный JSON."); } } } Я продолжаю видеть ошибку:
Не найдена веб-страница по веб-адресу: https://localhost:44309/api/testdata
Чего мне не хватает, чтобы это заработало?
У меня пока нет атрибута авторизации на контроллере, потому что я собирался сначала протестировать его без входа в систему.
Спасибо
Я начал новый проект Blazor с новой автоматической настройкой .NET 8.
Я пытаюсь разместить контроллер веб-API в своем серверном проекте и использовать функцию аутентификации личности ASP.NET, чтобы убедиться, что кто-то вошел в систему и т. д.
Вот настройка моего контроллера API:
[Route("api/[controller]")] общедоступный класс TestDataController: ApiController { частная среда IWebHostEnvironment только для чтения; общедоступный TestDataController (среда IWebHostEnvironment) { this.environment = окружающая среда; } [HttpGet] общедоступный IHttpActionResult Get() { строковый путь = Path.Combine(environment.WebRootPath); строка returnData = $"filename: {"1"} | путь: {путь}"; вернуть ОК (returnData); } } Тогда в моем клиентском проекте у меня есть такая настройка:
Program.cs в клиентском проекте:
builder.Services.AddHttpClient("WebAPI", клиент => client.BaseAddress = новый Uri(builder.Configuration["BaseAddress"])); builder.Services.AddScoped(sp => sp.GetRequiredService() .CreateClient("WebAPI")); Razor.cs
@page "/api-call" @using App.Client.Services @using System.Net.Http.Headers @using Syncfusion.Blazor.Buttons @используя System.Text.Json @inject IHttpClientFactory HttpClientFactory @inject CookieService CookieService @rendermode InteractiveWebAssembly ApiCall @if (APIValue!= ноль) { @APIValue } еще { Загрузка товаров... } @код { частная строка APIValue {get; набор; } защищенное переопределение асинхронной задачи OnInitializedAsync() { } частная асинхронная задача onToggleClick() { вар httpClient = HttpClientFactory.CreateClient("WebAPI"); //var cookie = await CookieService.GetCookieValue("YourCookieName"); // httpClient.DefaultRequestHeaders.Authorization = // новое AuthenticationHeaderValue("Bearer", cookie); пытаться { APIValue = ожидание httpClient.GetFromJsonAsync("TestData"); } catch (HttpRequestException ex) // Не удалось { Console.WriteLine("Произошла ошибка."); APIValue = $"ошибка {ex.Message}"; } catch (NotSupportedException) // Когда тип контента недействителен { Console.WriteLine("Тип контента не поддерживается."); } catch (JsonException) // Неверный JSON { Console.WriteLine("Неверный JSON."); } } } Я продолжаю видеть ошибку:
Не найдена веб-страница по веб-адресу: https://localhost:44309/api/testdata
Чего мне не хватает, чтобы это заработало?
У меня пока нет атрибута авторизации на контроллере, потому что я собирался сначала протестировать его без входа в систему.
Спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение