【问题标题】:Blazor server app not working when deployed, works fine in Visual StudioBlazor 服务器应用程序在部署时不工作,在 Visual Studio 中工作正常
【发布时间】:2021-05-25 00:59:09
【问题描述】:

我有一个使用 .NET5 在 Visual Studio 2019 中开发的 Blazor 服务器端项目。一切正常。

我刚刚将该站点部署到了一个测试服务器(它上面已经运行了两个这样的站点,所以我知道该服务器具有运行该站点所需的一切),但是 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 文件包含所有正确的usings,具体包括...

@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")].razor 文件中的@attribute [Authorize(Roles = "Admin")] 进行修饰。

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

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

【问题讨论】:

  • 如果您在 Windows 服务器上运行,请检查服务器上的事件查看器。或类似的其他操作系统。这应该让你对这个问题有一个更大的了解。你应该得到错误。
  • @Marius 不,事件查看器中没有任何与此站点相关的内容。还有其他想法吗?谢谢
  • 怎么了,Avrohom?您的代码有一些问题,可能与您似乎面临的主要问题无关。我想您首先需要确保您的应用现在可以正常运行,然后再处理小事。
  • @enet 你好。不,代码本身可以正常工作。请查看我的问题的更新。
  • 感谢您的跟进,@AvrohomYisroel。请将您的解决方案从问题的顶部移到下面的新答案中。鼓励自我回答!另外,请随意接受您自己的答案。

标签: blazor blazor-server-side


【解决方案1】:

原来问题与我的代码无关,也与我在服务器上的站点设置无关。我使用 Cloudflare,并将其设置为缩小 HTML。这将删除 Blazor 工作所必需的两个 HTML cmet。请参阅this article 了解更多信息。

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

【讨论】:

  • 你是个传奇。
  • @KyleWhittington 嘻嘻,如果只是!我们现在要做的就是说服 Microsoft 找到一种更好的方法将 Blazor 数据包含在页面中。
猜你喜欢
  • 1970-01-01
  • 2015-07-09
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 2013-07-25
  • 2015-10-17
相关资源
最近更新 更多