欢迎文本 blazor 应用程序不断收到错误“错误。处理您的请求时发生错误。”我无法通过这个错误页面

问题描述 投票:0回答:1

Welcome 文本应用程序的目的是生成一个指向 WelcomeText 站点的 Web 链接并将该链接发送给新客户。在网站上,客户应该受到欢迎消息的欢迎,但欢迎页面从未显示,而是立即转到错误页面

开发模式切换到开发环境会显示有关发生的错误的详细信息

接收错误

应用程序正在从 Visual Studio 发布到 IIS Web 服务器。我运行时收到的最后 2 个错误日志是:

ISAPI 向其工作进程报告了不健康状况。因此,为应用程序池“WelcomeText”提供服务的进程 ID 为“924”的工作进程已请求回收。

日志名称:应用程序
来源:.NET 运行时
日期:2024年11月5日下午3:27:33
活动ID:1000
任务类别:无
级别:错误
关键词:经典
用户:不适用
计算机:BLAZOR.hometowne.local
描述:
类别: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware
事件ID:1
跨度 ID:23bb04c94decbf4d
TraceId:a03b83ddef80d2323a257ad2617d08b3
父 ID: 0000000000000000
请求ID:40008782-0006-be00-b63f-84710c7967bb
请求路径:/welcome/feeeef
操作 ID:6b03fe1e-b4a6-4b60-8b05-a45167a2a608
动作名称:/_Host

执行请求时发生未处理的异常。

异常:System.InvalidOperationException:当前线程未与Dispatcher关联。当触发渲染或组件状态时,使用 InvokeAsync() 将执行切换到 Dispatcher。

在 Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
在 \WelcomeText\Shared\Piinegrow.razor 中的 WelcomeText.Shared.Piinegrow.UpdateProgressBar(MessageArgs args) 处:第 67 行
在 BlazorComponentBus.ComponentBus.<>c__DisplayClass12_1`1.b__2()
在System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(线程threadPoolThread,ExecutionContext执行上下文,ContextCallback回调,对象状态)
--- 先前位置的堆栈跟踪结束 ---
在System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(线程threadPoolThread,ExecutionContext执行上下文,ContextCallback回调,对象状态)
在System.Threading.Tasks.Task.ExecuteWithThreadLocal(任务&currentTaskSlot,线程threadPoolThread)
--- 先前位置的堆栈跟踪结束 ---
在 BlazorComponentBus.ComponentBus.Publish[T](T 消息,CancellationToken ct)
在 C:\Users\jkligel\source 中的 WelcomeText.Pages.WelcomePage.OnInitializedAsync() 处 epos\hometowne001\HTCApps\WelcomeText\Pages\WelcomePage.razor:第 67 行
在 Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 taskToHandle,ComponentState owningComponentState)
在...

我尝试注释掉这行代码:

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

代码图片

我还尝试将

ASPNETCORE_ENVIRONMENT
值从“开发”更改为“生产”

launchSettings.json 的图像

所有解决方案均无效。

我的 web.config 说

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\WelcomeText.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
        <environmentVariables>
            <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
        </environmentVariables>
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 4a5d8fb7-ed18-42d5-a130-e51889d7df34-->
c# asp.net-core iis blazor
1个回答
0
投票

异常:System.InvalidOperationException:当前线程不是 与调度程序相关联。使用 InvokeAsync() 切换执行 触发渲染或组件状态时发送给调度程序。

在 Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged() 处 WelcomeText.Shared.Piinegrow.UpdateProgressBar(MessageArgs args) 中 \WelcomeText\Shared\Pinegrow.razor:第 67 行

对于此错误,您可以使用

await InvokeAsync(() => StateHasChanged());
InvokeAsync
来解决问题。

错误背后的原因是尝试从 Blazor 中的非 UI 线程更新 UI。

© www.soinside.com 2019 - 2024. All rights reserved.