Исключение нулевой ссылки в Blazor при переходе непосредственно на страницу

Я работаю над серверным/клиентским приложением Blazor, используя интерактивную веб-сборку. У меня есть страница, на которой перечислены некоторые объекты (арендаторы), и при нажатии на эти объекты она переходит на страницу с идентификатором объекта в качестве параметра в пути Uri.

/tenants/ -> /tenants/{Id}

При навигации по ссылке все работает корректно и проблем не возникает. Однако, если я напрямую ввожу Uri для конкретного объекта в браузере, я получаю общий NullReferenceException, который, по-видимому, генерируется из метода DbContext.OnConfiguring() моего Сервера на основе прохождения точек останова, но на странице «нет кода для отображения». Ниже приведены соответствующие фрагменты кода (некоторые коды удалены для краткости). Я чувствую, что с моей стороны это недостаток знаний в отношении интерактивной веб-сборки, поскольку в противном случае для меня это просто не имеет смысла. Любая помощь будет оценена по достоинству.

Страница одного клиента (клиент)

@page "/tenants/{Id}"
@inject HttpClient httpClient

@code {
  [Parameter]
  public string Id { get; set; } = null!;

  TenantClientService tenantService = null!;

  protected override async Task OnInitializedAsync() {
      tenantService = new TenantClientService(httpClient);
      targetTenant = await tenantService.GetTenantAsync(Guid.Parse(Id)) ?? throw new InvalidOperationException($"Tenant with ID {Id} not found"); // <--- Throwing here
  }
}

арендаторСервис (Клиент)

internal async Task<Tenant?> GetTenantAsync(Guid id) {
    Logger.LogInformation("Getting tenant with id {id}", id);
    Tenant? tenant = await HttpClient.GetFromJsonAsync<Tenant>($"{_endpoint}/{id}"); // <--- Throwing here
    if (tenant is null) {
        Logger.LogError("Failed to get tenant with id {id}", id);
    }
    return tenant;
}

Контроллер (Сервер)

[HttpGet("{id}")]
public async Task<IActionResult> Get(Guid id) {
    Tenant? tenant = await tenantRepository.GetTenantByIdAsync(id); // <--- Throwing here
    if (tenant is null) {
        return NotFound();
    }
    return Ok(tenant);
}

Репо (Сервер)

public async Task<Tenant> GetTenantByIdAsync(Guid id) {
    Logger.LogInformation("Getting tenant with id {id}", id);
    Tenant? tenant = await Context.Tenants.FindAsync(id); // <--- Throwing here
    if (tenant is null) {
        Logger.LogError("Tenant with id {id} not found", id);
        throw new ArgumentNullException(nameof(id), "Tenant not found");
    }
    return tenant;
}

ДбКонтекст (Сервер)

protected override void OnConfiguring(DbContextOptionsBuilder options) {
    options.UseNpgsql(  // <--- Seems to be throwing somewhere here.
            new NpgsqlConnectionStringBuilder {
                Host = config.Host,
                Port = config.Port,
                Database = config.Database,
                Username = config.Username,
                Password = config.Password
            }.ConnectionString
        )
}

Я попробовал перейти на страницу через прямой URL-адрес (т. е. https://localhost:7190/tenants/48277ddd-342e-4a99-b683-cce1c953f564) и ожидал получить тот же результат, что и переход по ссылке из списка арендаторов, но вместо этого получил NullReferenceException.

Редактировать 1

Стек вызовов:

Symphony.Client.dll!Symphony.Client.Pages.TenantPage.BuildRenderTree.AnonymousMethod__0_0(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder2)   Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.RenderFragment fragment)   Unknown
    Microsoft.AspNetCore.Components.Web.dll!Microsoft.AspNetCore.Components.Web.PageTitle.BuildTitleRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder builder) Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(Microsoft.AspNetCore.Components.Rendering.RenderBatchBuilder batchBuilder, Microsoft.AspNetCore.Components.RenderFragment renderFragment, out System.Exception renderFragmentException)    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(int componentId, Microsoft.AspNetCore.Components.RenderFragment renderFragment)    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged() Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(Microsoft.AspNetCore.Components.ParameterView directAndCascadingParameters)   Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(Microsoft.AspNetCore.Components.ParameterView parameters)  Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(int componentId, Microsoft.AspNetCore.Components.ParameterView initialParameters)  Unknown
    Microsoft.AspNetCore.Components.Web.dll!Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(Microsoft.AspNetCore.Components.IComponent component, Microsoft.AspNetCore.Components.ParameterView initialParameters)  Unknown
    Microsoft.AspNetCore.Components.Endpoints.dll!Microsoft.AspNetCore.Components.Endpoints.EndpointHtmlRenderer.RenderEndpointComponent(Microsoft.AspNetCore.Http.HttpContext httpContext, System.Type rootComponentType, Microsoft.AspNetCore.Components.ParameterView parameters, bool waitForQuiescence)    Unknown
    Microsoft.AspNetCore.Components.Endpoints.dll!Microsoft.AspNetCore.Components.Endpoints.RazorComponentEndpointInvoker.RenderComponentCore(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.InvokeAsync.AnonymousMethod__10_0((System.Runtime.CompilerServices.AsyncTaskMethodBuilder completion, System.Func<System.Threading.Tasks.Task> asyncAction) state) Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.InvokeWithThisAsCurrentSyncCtxThenSetResult<(System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>)>(System.Runtime.CompilerServices.AsyncTaskMethodBuilder completion, System.Action<(System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>)> callback, (System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>) state)   Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.SendIfQuiescedOrElsePost<(System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>)>(System.Action<(System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>)> callback, (System.Runtime.CompilerServices.AsyncTaskMethodBuilder, System.Func<System.Threading.Tasks.Task>) state) Unknown
    Microsoft.AspNetCore.Components.dll!Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.InvokeAsync(System.Func<System.Threading.Tasks.Task> asyncAction)  Unknown
    Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)  Unknown
    Microsoft.AspNetCore.Antiforgery.dll!Microsoft.AspNetCore.Antiforgery.Internal.AntiforgeryMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    Microsoft.AspNetCore.StaticFiles.dll!Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
    Microsoft.AspNetCore.HttpsPolicy.dll!Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll!Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
    Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
    Microsoft.AspNetCore.Http.Abstractions.dll!Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    Microsoft.AspNetCore.Authorization.Policy.dll!Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    Microsoft.AspNetCore.Authentication.dll!Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    Microsoft.AspNetCore.Routing.dll!Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext httpContext)   Unknown
    Microsoft.AspNetCore.Diagnostics.dll!Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(Microsoft.AspNetCore.Http.HttpContext context)    Unknown
    Microsoft.AspNetCore.HostFiltering.dll!Microsoft.AspNetCore.HostFiltering.HostFilteringMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext context) Unknown
    Microsoft.WebTools.BrowserLink.Net.dll!Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context)  Unknown
    [Resuming Async Method] 
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<InvokeAsync>d__7>.ExecutionContextCallback(object s)    Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<InvokeAsync>d__7>.MoveNext(System.Threading.Thread threadPoolThread)    Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<InvokeAsync>d__7>.MoveNext()    Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] Microsoft.WebTools.BrowserLink.Net.dll!Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.GetScriptTag(string requestId, bool isHttps, string hostUrl)    Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<GetScriptTag>d__8>.ExecutionContextCallback(object s)  Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<string>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<GetScriptTag>d__8>.MoveNext(System.Threading.Thread threadPoolThread)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<Microsoft.WebTools.BrowserLink.Net.BrowserLinkMiddleware.<GetScriptTag>d__8>.MoveNext()  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] System.Net.Http.dll!System.Net.Http.HttpClient.SendAsync.__Core|83_0(System.Net.Http.HttpRequestMessage request, System.Net.Http.HttpCompletionOption completionOption, System.Threading.CancellationTokenSource cts, bool disposeCts, System.Threading.CancellationTokenSource pendingRequestsCts, System.Threading.CancellationToken originalCancellationToken)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpClient.<<SendAsync>g__Core|83_0>d>.ExecutionContextCallback(object s)    Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Net.Http.HttpResponseMessage>.AsyncStateMachineBox<System.Net.Http.HttpClient.<<SendAsync>g__Core|83_0>d>.MoveNext(System.Threading.Thread threadPoolThread)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpClient.<<SendAsync>g__Core|83_0>d>.MoveNext()    Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] System.Net.Http.dll!System.Net.Http.RedirectHandler.SendAsync(System.Net.Http.HttpRequestMessage request, bool async, System.Threading.CancellationToken cancellationToken) Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.RedirectHandler.<SendAsync>d__4>.ExecutionContextCallback(object s)  Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Net.Http.HttpResponseMessage>.AsyncStateMachineBox<System.Net.Http.RedirectHandler.<SendAsync>d__4>.MoveNext(System.Threading.Thread threadPoolThread) Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.RedirectHandler.<SendAsync>d__4>.MoveNext()  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] System.Net.Http.dll!System.Net.Http.DiagnosticsHandler.SendAsyncCore(System.Net.Http.HttpRequestMessage request, bool async, System.Threading.CancellationToken cancellationToken)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.DiagnosticsHandler.<SendAsyncCore>d__10>.ExecutionContextCallback(object s)  Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Net.Http.HttpResponseMessage>.AsyncStateMachineBox<System.Net.Http.DiagnosticsHandler.<SendAsyncCore>d__10>.MoveNext(System.Threading.Thread threadPoolThread) Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.DiagnosticsHandler.<SendAsyncCore>d__10>.MoveNext()  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] System.Net.Http.dll!System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(System.Net.Http.HttpRequestMessage request, bool async, bool doRequestAuth, System.Threading.CancellationToken cancellationToken)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpConnectionPool.<SendWithVersionDetectionAndRetryAsync>d__89>.ExecutionContextCallback(object s)  Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Net.Http.HttpResponseMessage>.AsyncStateMachineBox<System.Net.Http.HttpConnectionPool.<SendWithVersionDetectionAndRetryAsync>d__89>.MoveNext(System.Threading.Thread threadPoolThread) Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpConnectionPool.<SendWithVersionDetectionAndRetryAsync>d__89>.MoveNext()  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)    Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)   Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)  Unknown
    System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)    Unknown
    [Completed] System.Net.Http.dll!System.Net.Http.HttpConnection.SendAsync(System.Net.Http.HttpRequestMessage request, bool async, System.Threading.CancellationToken cancellationToken)  Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<SendAsync>d__57>.ExecutionContextCallback(object s)  Unknown
    System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread threadPoolThread, System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)   Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Net.Http.HttpResponseMessage>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<SendAsync>d__57>.MoveNext(System.Threading.Thread threadPoolThread) Unknown
    System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.AsyncStateMachineBox<System.Net.Http.HttpConnection.<SendAsync>d__57>.ExecuteFromThreadPool(System.Threading.Thread threadPoolThread) Unknown
    System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()  Unknown
    System.Private.CoreLib.dll!System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() Unknown
    [Async Call Stack]  
    [Async] Microsoft.AspNetCore.Watch.BrowserRefresh.dll!Microsoft.AspNetCore.Watch.BrowserRefresh.BrowserRefreshMiddleware.InvokeAsync(Microsoft.AspNetCore.Http.HttpContext context) Unknown
    [Async] Microsoft.AspNetCore.Server.Kestrel.Core.dll!Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests<Microsoft.AspNetCore.Hosting.HostingApplication.Context>(Microsoft.AspNetCore.Hosting.Server.IHttpApplication<Microsoft.AspNetCore.Hosting.HostingApplication.Context> application)    Unknown
    [Async] Microsoft.AspNetCore.Server.Kestrel.Core.dll!Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequestsAsync<Microsoft.AspNetCore.Hosting.HostingApplication.Context>(Microsoft.AspNetCore.Hosting.Server.IHttpApplication<Microsoft.AspNetCore.Hosting.HostingApplication.Context> application)   Unknown

Редактировать 2

После выбора «Показать внешний код» в стеке вызовов Visual Studio мне удалось изолировать место, где генерируется исключение:

TenantPage.BuildRenderTree

protected override void BuildRenderTree(RenderTreeBuilder __builder)
{
    __builder.OpenComponent<PageTitle>(0);
    __builder.AddAttribute(1, "ChildContent", (RenderFragment)delegate(RenderTreeBuilder __builder2)
    {
        __builder2.AddContent(2, targetTenant.Name); // <-- Throwing here
    });
    __builder.CloseComponent();
    __builder.AddMarkupContent(3, "\r\n\r\n");
/...
}

Каков стек вызовов исключения?

stuartd 14.08.2024 23:05

Нижняя часть стопки обычно наиболее информативна — там, где началась проблема. Может быть, поместить это в суть или другое онлайн-место и добавить ссылку на вопрос?

stuartd 14.08.2024 23:25

@stuartd Я отредактировал ответ, включив в него стек вызовов.

Theologos 14.08.2024 23:26

Я вижу это, спасибо. Это выглядит не очень полезно?

stuartd 14.08.2024 23:27

Интересно, поможет ли github.com/benaadams/Ben.Demystifier в этом случае. Теперь я вижу, что вы добавили комментарии типа «выбрасываем сюда» в свои фрагменты кода. Если вы добавите точки останова, сможете ли вы увидеть, что «происходит» исключение?

stuartd 14.08.2024 23:33

Другая возможность — пробовали ли вы настроить отладчик на «прерывание при возникновении исключения» для всех исключений?

stuartd 14.08.2024 23:35

Я добавил точки останова во все эти места, однако после выбора «Показать внешний код» в стеке вызовов мне показывается фактическое место, где происходит исключение. Мне придется углубиться в это, когда я смогу вернуться к своей машине, и я добавлю дополнительный контекст к вопросу.

Theologos 14.08.2024 23:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема оказалась в пропущенной части кода в TenantPage:

@* ... *@
<PageTitle>@targetTenant.Name</PageTitle>
@* ... *@

Использование нулевого условия решает проблему (спасибо @LoneSpawn):

@* ... *@
<PageTitle>@targetTenant?.Name</PageTitle>
@* ... *@

Я могу объяснить это только каким-то состоянием гонки при рендеринге и получении данных из API сервера, поскольку он хорошо работал при переходе по гиперссылкам в приложении.

Спасибо @stuartd за то, что направил меня на правильный путь.

Очиститель с использованием нулевого условия: <PageTitle>@targetTenant?.Name</PageTitle>

LoneSpawn 15.08.2024 00:26

Другие вопросы по теме