我有一个 Blazor 服务器端项目,我一直在 Visual Studio 2019 中使用 .NET5 开发该项目。一切都运行良好。
我刚刚将该站点部署到测试服务器(该服务器上已经运行了两个这样的站点,因此我知道该服务器拥有运行该站点所需的一切),但 Blazor 的东西似乎都不起作用。具体来说...
[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
修饰。
有人知道我可能做错了什么吗?如果我可以提供更多信息,请告知。谢谢
更新 我刚刚尝试将站点部署到同一服务器上的另一个域,并且运行良好。我还尝试将另一个站点指向此站点的文件夹,并且工作正常(因此它不是部署的文件),然后将此站点指向另一个站点的文件夹,但它不起作用。所以,看起来这个网站本身有问题,但我不知道是什么,因为它看起来像另一个。
事实证明,问题与我的代码无关,也与我在服务器上的站点设置无关。我使用 Cloudflare,并将其设置为缩小 HTML。这会删除 Blazor 正常工作所必需的两个 HTML 注释。请参阅本文了解更多信息。
因此,如果您使用 Cloudflare,请务必将其设置为缩小 JavaScript 和 CSS,但不要缩小 HTML。
如果您在 IIS 上托管应用程序并且 Blazor 是服务器端项目,请确保按照此说明在添加角色和功能向导中启用 WebSocket 功能。
希望这对某人有帮助
供参考 => https://learn.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/server?view=aspnetcore-8.0#iis