В отличие от клиентского Blazor, серверный Blazor требует, чтобы вы добавили HttpClient в DI-контейнер и внедрили его в ваши компоненты.
Вы можете сделать это:
- Добавьте этот код в метод Startup.ConfigureServices:
// Server Side Blazor doesn't register HttpClient by default
if (!services.Any(x => x.ServiceType == typeof(HttpClient)))
{
// Setup HttpClient for server side in a client side compatible fashion
services.AddScoped<HttpClient>(s =>
{
var uriHelper = s.GetRequiredService<IUriHelper>();
return new HttpClient
{
BaseAddress = new Uri(uriHelper.GetBaseUri())
};
});
}
- Вы также можете использовать IHttpClientFactory для настройки и создания экземпляров HttpClient (предпочтительно)
Ответьте на свойвопрос
Как получить локальный источник данных в серверных приложениях:
Определение локальной службы, которая может напрямую обращаться к базе данных, может помочь.Смотрите стандартные шаблоны на стороне сервера, как это сделать.Вы можете использовать Entity Framework Core в службе для доступа к объектам базы данных.
Обратите внимание, что использование локальной службы, которая напрямую обращается к вашей базе данных, может иметь неблагоприятные последствия, если вы решите переключиться на клиентскую сторону Blazor, поскольку связь междуВаша служба доступа к данным выполняется на клиентской стороне Blazor, а ваш сервер невозможен.Это пример важности планирования реализации приложения Blazor.Лично я бы придерживался HttpClient и избегал сервисов, но это мое личное мнение.Другие могут думать иначе.
Надеюсь, это поможет ...