【问题标题】:Trouble upgrading Blazor Server site 5 to 6将 Blazor Server 站点 5 升级到 6 时出现问题
【发布时间】:2021-11-17 06:57:04
【问题描述】:

我做到了:

  1. 创建新的 6.0 项目
  2. 将所有组件和代码等复制到新项目中
  3. 将我以前在Startup.cs 中的服务添加到Program.cs
  4. 将我的全局使用移动到一个新文件Globals.cs

代码编译并开始运行,但在爆炸之前从未显示任何内容。

问题

_Host.cshtml 中,最后一行现在抛出空引用错误:

@page "/"
@namespace BEC.web.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = "_Layout";
}
<component type="typeof(App)" render-mode="ServerPrerendered" />

我知道这个问题很难回答,但我想知道是否有人可以稍微说明一下我可能出错的地方。

【问题讨论】:

  • 您将服务从 Startup 移至 Program 的任何特殊原因?
  • 异常可能在App 组件本身内部,而不是在_Host.cshtml 内部。如果可以,请发布您的堆栈跟踪,并在 BlazorServer 配置中启用详细的异常。
  • @Mayur Ekbote 是的,我想尽可能地符合默认的 6.0 应用程序,这样我就可以了解他们是如何简化它的。
  • @HMZ 应用程序和服务运行良好,但页面中的某些内容导致应用程序崩溃。尽管如此,我还是决定重构整个站点。有一些组织上的不一致等等,玩Satisfactory让我对干净的组织产生了兴趣。 :)

标签: blazor blazor-server-side


【解决方案1】:

定义“爆炸”。

我的猜测是它在“/”路径中加载的组件之一。正如您所说,当您的应用程序爆炸时,Net6 中引入了一些错误报告问题。参见例如 - https://github.com/dotnet/aspnetcore/issues/38380

尝试创建一个最小的应用程序,看看会发生什么 - 没有路由器,只是一些简单的 html 输出。走着瞧吧。然后添加路由器,但内容固定,看路由器是否OK。我在下面添加了一些代码来向您展示可以尝试的东西。

@*<Router AppAssembly="@typeof(App).Assembly">
    <Found Context="routeData">
    <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    <FocusOnNavigate RouteData="@routeData" Selector="h1" />
    </Found>
    <NotFound>
    <PageTitle>Not found</PageTitle>
    <LayoutView Layout="@typeof(MainLayout)">
    <p role="alert">Sorry, there's nothing at this address.</p>
    </LayoutView>
    </NotFound>
    </Router>
*@
@* Step 1*@
Hello World

@* Step 2*@
<Router AppAssembly="@typeof(App).Assembly">
    <Found Context="routeData">
        Found
    </Found>
    <NotFound>
        Not Found
    </NotFound>
</Router>

@* Step 3*@
<Router AppAssembly="@typeof(App).Assembly">
    <Found Context="routeData">
        <StackOverflow.Server.Pages.Index />
    </Found>
    <NotFound>
        Not Found
    </NotFound>
</Router>

【讨论】:

  • 链接中的堆栈跟踪以及出现错误的位置看起来与我对“爆炸”的定义非常相似。那么这是否意味着我刚刚复制了旧的“/”页面以及同样具有page "/" 的默认索引页面?
  • 更新多亏了这一点,我已经可以运行页面了。我认为还有很多清理工作要做,但至少我现在得到了一个页面。不得不说,我对 Blazor 6 的兴奋已经不像几天前那么强烈了——那个错误是不可原谅的,而且 Intellisense 似乎比以前更糟了。
  • 我并不是在暗示你一定有一个重复的路线,而是向你展示在启动时的错误报告中显然存在一些 Net6 问题。我的印象和你差不多。智能感知似乎在 Razor 文件中大部分时间都丢失了,并且错误地纠正了你,我可能会在这里发布一个问题,看看其他人看到了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多