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

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

我有一个 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>

_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

非登录用户不应访问的页面在代码隐藏中用

[Authorize(Roles = "Admin")]
或在
@attribute [Authorize(Roles = "Admin")]
文件中用
.razor
修饰。

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

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

blazor blazor-server-side
2个回答
10
投票

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

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


0
投票

如果您在 IIS 上托管应用程序并且 Blazor 是服务器端项目,请确保按照此说明添加角色和功能向导中启用 WebSocket 功能。

希望这对某人有帮助

供参考 => https://learn.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/server?view=aspnetcore-8.0#iis

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