Вызов службы с внедрением зависимостей Blazor .NET 10 даже не срабатываетC#

Место общения программистов C#
Ответить
Anonymous
 Вызов службы с внедрением зависимостей Blazor .NET 10 даже не срабатывает

Сообщение Anonymous »

У меня возникла проблема с Blazor, который не запускает или не завершает вызов, когда я внедряю интерфейс службы для выполнения некоторых вызовов серверной части/базы данных и использую его на своей странице.
У меня есть уровень службы с таким интерфейсом:

Код: Выделить всё

public interface IDataServices
{
Task GetJobConfigurationsAsync();
}
И его реализация:

Код: Выделить всё

public class JobConfigDataServices : IDataServices
{
// this is my Repository layer, will be injected via DI
private readonly IDataRepository _jobConfigRepository;
private readonly ILogger _logger;

public JobConfigDataServices(IDataRepository jobConfigRepository, ILogger logger)
{
_jobConfigRepository = jobConfigRepository;
_logger = logger;
}

public async Task GetJobConfigurationsAsync()
{
var getAllQuery = @"select Id, JobName, AppName, ParamName, ParamValue, ParamOrder, CreatedDate, UpdatedDate from DBSchema.JobConfigurations";
var getAllJobConfigs = await _jobConfigRepository.GetResultCollectionAsync(getAllQuery);

return getAllJobConfigs;
}
}
Реализация, в свою очередь, вызывает вызов общего класса репозитория, который просто использует Dapper ORM для получения данных. Этот репозиторий уже работает во всех случаях и хорошо протестирован, чтобы делать то, что должен. Поэтому я не делюсь здесь подробностями реализации.
GetResultCollectionAsync() предоставит сбор данных типа JobConfigurations.
Вот как выглядит моя страница Blazor:

Код: Выделить всё

@page "/jobconfigs"
@using JobsStatus.Contracts
@using JobsStatus.Services

@inject IDataServices jobService

Job Configurations

This is the Job Configurations page.

@if (isLoading)
{
Loading...
}
else if (!string.IsNullOrEmpty(errorMessage))
{
@errorMessage
}
else
{
@foreach (var job in DbJobs)
{

[b]@job.JobName[/b] - @job.AppName

}
}


@code {
private IEnumerable DbJobs { get; set; } = Array.Empty();
private bool isLoading = true;
private string? errorMessage;

protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender || !isLoading)
{
return;
}

try
{
DbJobs = await jobService.GetJobConfigurationsAsync();
}
catch (Exception ex)
{
errorMessage = $"Failed to load job configurations: {ex.Message}";
}
finally
{
isLoading = false;
await InvokeAsync(StateHasChanged);
}
}
}
Мои DI в Program.cs выглядят следующим образом:

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);

// Add Infrastructure services
builder.Services.Configure(builder.Configuration.Bind);

// Add the injections for the data services
builder.Services.AddScoped(typeof(IDataRepository), typeof(MmdDataRepository));
builder.Services.AddScoped();

// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}

app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
app.UseHttpsRedirection();

app.UseAntiforgery();

app.MapStaticAssets();
app.MapRazorComponents()
.AddInteractiveServerRenderMode();

app.Run();
При всем этом, когда я запускаю свое приложение и перехожу к https://localhost:###/jobconfigs, который является маршрутом моей страницы к указанной выше странице Razor, он ничего не делает. У меня есть точки останова во всех возможных местах, в том числе в OnInitializedAsync() раньше, а также в OnAfterRenderAsync(), но безуспешно. Это даже не запуск и не попадание сюда.
Если я удалю строку @inject IDataServices jobService со своей страницы Razor, все события будут запущены и все точки останова достигнуты.
Если это может помочь, мой App.razor выглядит так: Я добавил @rendermode="InteractiveServer" в соответствии с некоторыми предложениями ИИ, но безуспешно. Я предполагаю (могу ошибаться), что весь этот опыт взят из разработки веб-приложений Blazor на базе .NET 10 и .NET 10.
Что мне не хватает и что не так в моем коде?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ven-firing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»