Blazor 服务器应用程序在部署时无法工作,但在 Visual Studio 中工作正常

Avr*_*oel 0 blazor blazor-server-side

我有一个 Blazor 服务器端项目,我一直在 Visual Studio 2019 中使用 .NET5 开发该项目。一切都运转良好。

我刚刚将该站点部署到测试服务器(该服务器上已经运行了两个这样的站点,因此我知道该服务器拥有运行该站点所需的一切),但 Blazor 的东西似乎都不起作用。具体来说...

  • 单击按钮不会执行任何操作
  • 单击链接会刷新整个页面,而不仅仅是呈现新的 HTML
  • 授权似乎被忽略了,因此具有属性的页面[Authorize]对任何人都可见

不知道要显示什么代码,因为它在 VS 中运行时都有效。App.razor以下是...的内容

<CascadingAuthenticationState>
  <Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
      <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
        <NotAuthorized>
          <RedirectToLogin />
        </NotAuthorized>
      </AuthorizeRouteView>
    </Found>
    <NotFound>
      <AuthorizeView>
        <Authorized>
          <LayoutView Layout="@typeof(MainLayout)">
            <NotFound />
          </LayoutView>
        </Authorized>
        <NotAuthorized>
          <RedirectToLogin />
        </NotAuthorized>
      </AuthorizeView>
    </NotFound>
  </Router>
</CascadingAuthenticationState>
Run Code Online (Sandbox Code Playgroud)

_Imports.razor文件包含所有正确的using内容,特别包括...

@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
Run Code Online (Sandbox Code Playgroud)

非登录用户不应访问的页面[Authorize(Roles = "Admin")]在代码隐藏或@attribute [Authorize(Roles = "Admin")]文件中用 进行修饰.razor

有人知道我可能做错了什么吗?如果我可以提供更多信息,请告知。谢谢

更新我刚刚尝试将站点部署到同一服务器上的另一个域,并且运行正常。我还尝试将另一个站点指向此站点的文件夹,并且工作正常(因此它不是部署的文件),然后将此站点指向另一个站点的文件夹,但它不起作用。所以,看起来这个网站本身有问题,但我不知道是什么,因为它看起来像另一个。

Avr*_*oel 9

事实证明,这个问题与我的代码无关,也与我在服务器上的站点设置无关。我使用 Cloudflare,并将其设置为缩小 HTML。这会删除 Blazor 正常工作所必需的两个 HTML 注释。请参阅这篇文章了解更多信息。

因此,如果您使用 Cloudflare,请务必将其设置为缩小 JavaScript 和 CSS,但不要缩小 HTML。