Blazor 服务器应用程序组件突然抛出空引用异常

2024-03-10

今天,当我在 Visual Studio 2022 中以调试模式启动 Blazor 服务器应用程序时,我几周来每天开发的 Blazor 服务器应用程序突然开始在 _Host.cshtml 中引发异常。错误如附图所示。

_Host.cshtml 的当前状态

@page "/"
@namespace Ano.Blazor.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = "_Layout";
}

<component type="typeof(App)" render-mode="ServerPrerendered" />
<link rel="stylesheet" href="_content/Radzen.Blazor/css/standard-base.css"/>
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>

这是 App.razor,该组件似乎在 _Host.cshtml 中抛出异常

<CascadingAuthenticationState>
    <Router AppAssembly="@typeof(App).Assembly">
        <Found Context="routeData">
            <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
                <NotAuthorized>
                    <Ano.Blazor.Pages.RedirectToLogin></Ano.Blazor.Pages.RedirectToLogin>
                </NotAuthorized>
            </AuthorizeRouteView>
            <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>
</CascadingAuthenticationState>

奇怪的是,当异常第一次出现时,我没有对 _Host.cshtml 或 App.razor 进行任何更改。我刚刚所做的是为身份添加脚手架项目,特别是ConfirmEmail 剃刀页面。

昨天添加了 Radzen 组件的使用,并且没有引起任何问题。但为了排除这种情况,我尝试运行应用程序并删除对 Radzen css 和 js 的引用。异常仍然存在。

此时我已经梳理了解决方案中的每个文件,寻找可能导致此问题的任何内容。该应用程序构建和重建没有错误。这个异常并没有告诉我问题可能出在哪里。

为了进行比较,我将之前的推送克隆到一个单独的文件夹,在 VS 2022 的新实例中启动该解决方案,在调试模式下运行该应用程序,然后它正常启动。这让我想到也许解决方案本身就有问题。损坏了?我删除了 .vs 文件夹并允许原始解决方案重新创建它,但之后异常仍然存在。

以前有人见过这个问题吗?


问题是我不小心创建了两个具有相同 @page 指令的页面。

EditUser.razor 有这个指令...

@page "EditUser{id}"

EditMyAccount.razor 有相同的指令......

@page "EditUser{id}"

我更改了 EditMyAccount.razor 以具有此指令...

@page "EditMyAccount"

这解决了运行时问题。

在我看来,这个问题太难找到了,因为 Visual Studio 没有任何编译警告或运行时异常来提供页面指令的线索。希望这能帮助其他人在未来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor 服务器应用程序组件突然抛出空引用异常 的相关文章

  • 如何判断代码是否将在 Blazor 的客户端或服务器上运行?

    我是 Blazor 开发的新手 我可能在这里遗漏了一些明显的东西 但是搜索 google 阅读文档和搜索此网站并没有为我找到答案 出于安全原因 我需要确保一些代码在服务器端运行 例如散列密码 我知道 Blazor 通常会自动确定代码的运行位
  • C# 修改身份或添加声明

    应用程序是 Blazor Server NET Core 5 0 我正在使用 NET Core 的身份系统 但遇到了问题 我希望将这个人的名字与身份一起存储 以便我可以轻松地调用它 目前我有一个类覆盖基本身份 public class Ap
  • 具有多个参数的 Blazor EventCallback - 如何响应父主机控件中的事件

    我有一个带有 EventCallBack 参数的 blazor 组件 该组件利用允许多个参数的新结构格式 Parameter public EventCallback lt EmployeeShiftDay DateTime DateTim
  • Razor Pages 与服务器端 Blazor

    用于服务器端 Web 应用程序 就像过去的美好时光一样 Blazor https learn microsoft com en us aspnet core blazor view aspnetcore 3 1旨在提供流行 JavaScri
  • Blazor RenderFragment 到字符串

    我正在开发一个代码块组件 Net 6 Blazor wasm 我需要显示RenderFragment as string并在我的 html 中渲染该组件 这是我的代码块组件 pre class language html code clas
  • 如何在docker镜像中运行signalr blazor客户端的StartAsync连接?

    我创建了默认的 blazor 服务器端应用程序 然后添加Microsoft AspNetCore SignalR Client and ChatHub班级 然后编辑startup cs文件 添加services AddSignalR and
  • 使用 Blazor 和 C# 刷新 html 表数据

    我有一种情况 我有一个 for 循环 它从我的数据模型创建我的 html 表 该数据模型从 SQL Server Express 获取数据 我想知道是否可以创建一个自动刷新方法 其中表数据仅刷新而不刷新整个页面 如果没有 那么也许 OnCl
  • 如何将 Blazor 应用程序作为插件/嵌入到另一个域中加载?

    我花了很多时间来让 blazor 插件正常工作 我的应用程序用作插件 嵌入到另一个域的网页中 它有效 但该方法有一些严重的缺点 我希望有人找到更好的方法 只是为了澄清我在做什么 我的网站位于右侧 另一个网站需要调用我的插件的代码位于左侧 我
  • 如何通过 HttpContext 访问 Blazor Server .Net 6 中的 cookie?

    不幸的是 有关在 Blazor Server 中访问 c ookie 的教程和之前的 StackOverflow 答案似乎在新的 Net 版本中变得无效 例如 我无法获得以下任一答案 根据 net 6 中没有的评论来判断 如何在服务器端 B
  • 共享类与 swagger 生成的类

    我有一个包含三个项目的 asp net Blazor VS 解决方案 Shared ASP NET核心API Blazor 网络组件 我创建了一堆课程Shared项目和其他两个项目 参考了Shared项目 到目前为止一切都很好 然后我用了S
  • 将客户端库添加到 Razor 类库

    我正在学习 Blazor 我注意到创建 Razor 类库是一个很好的做法 您将在其中定义大部分组件 这样您就可以在客户端或服务器中使用它们 而不会出现太多问题 在不同的框架中 我习惯于以 SASS 形式包含库作为引导程序 这样我就可以在我的
  • Blazor WeatherForecast 示例如何工作?

    Blazor 的 Hello World 项目模板包括天气预报示例 除了计数器增量示例之外 我用这个来看看幕后发生了什么 我似乎无法弄清楚 基本上 如果我注释掉获取天气 json 数据的代码行 那么我会无限期地看到 正在加载 到目前为止是有
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • 将带有 html 标签的纯文本转换为 html 字符串并在 Blazor 中呈现

    Sample var s p Sample text p 期待 Sample text 我希望它在浏览器上呈现 但我无法呈现它 它只是将 s 的整个值作为文本字符串输出 我已经尝试过 new HtmlString s 将其编码为HttpUt
  • 是否可以在 Blazor 中混合客户端和服务器端方法?

    例如 假设我正在创建一个简单的更改密码页面 用户名 当前密码 新密码 确认新密码 总而言之 我希望使用服务器端 Blazor 来消除编写单独的 API 后端的需要 但是 我希望在客户端中运行一些简单的验证代码 新密码和确认密码不匹配 密码复
  • 如何使用foreach从父组件调用子组件方法

    我已经看到了如何使用父组件调用子组件方法的示例 ref属性 但是当我尝试将它与foreach循环中 只有最后渲染的组件的方法被调用 而不是全部 以下是我的组件的示例 父组件
  • 如何将 blazor 客户端/服务器应用程序发布到 Linux Web 服务器?无法访问 ssh 并且 dotnetpublish 没有给出index.html

    我已经构建了一个 blazor 应用程序 目前没有任何问题 当我调用 dotnetpublish cRelease 时 我得到一个已发布的项目 除了输出是一个可执行文件 ubuntu将其作为八位字节流或类似的东西拾取 如果我运行它 它只会在
  • OnAfterRenderAsync 未触发

    我试图找出为什么我无法在 Blazor 中获取 OnAfterRenderAsync 方法 在尝试了多种选项并查看 Microsoft 文档后 我似乎找不到解决方案 我确信我错过了一些东西 但我无法弄清楚问题是什么 在下面的代码中 OnIn
  • dotnet.timezones.blat 返回 404 - 文件存在 - blazor 部署 [重复]

    这个问题在这里已经有答案了 我正在使用 Visual Studio 2022 wasm 托管站点项目 默认样板 我将其发布到 iis 服务器 但出现以下错误 我不知道为什么会发生这样的错误 我可以在框架文件夹中看到文件 doenet tim
  • 如何使用 Blazor 检索 Web 组件自定义事件结果

    Problem 我正在尝试使用构建的 Web 组件库模板 https stenciljs com docs getting started在 Blazor 项目中 许多组件都有自定义事件示例 滑块组件 由于它是自定义 Web 组件 因此双向

随机推荐