我正在尝试编写一个 .NET MAUI Blazor 应用程序,它与传统的 Blazor 应用程序共享 UI,如https://github.com/danroth27/BlazorWeather的 BlazorWeather 示例所示。
我对这个公式的看法是,我希望能够在我的应用程序中使用身份验证并尽可能多地共享代码。理想情况下,我希望将所有应用程序逻辑放在共享 UI 中(当然,API 也将只适用于 Web 和 MAUI)。
我尝试创建一个非常基本的示例解决方案,以便您了解我的问题。公共存储库应可在https://github.com/Dukenware/OneToRuleThemAll访问
我遵循的步骤:
- 我首先创建了一个具有“个人帐户”类型的默认身份验证的 Blazor 服务器。
- 测试应用程序是否按预期运行。
- 创建了我已添加到解决方案中的 Razor 类库项目。
- 将所有逻辑从 BlazorServer 移至 RazorClassLibrary 项目。
- 修复了 HTML 样式等,以便应用程序像以前一样运行。
- 添加了 MAUI Blazor 项目。
- 测试 MAUI 应用程序是否按预期运行。
- 引用了 RazorClassLibraryProject。
- 尝试通过从 MauiBlazor 的 Main.razor 运行 RazorClassLibrary.App 来显示来自 RazorClassLibrary 的 UI。
- 获取身份验证异常:
GetAuthenticationStateAsync was called before SetAuthenticationState.
at Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.GetAuthenticationStateAsync()
at Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.OnInitialized()
at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
如果有人能指出我可以用来构建我的应用程序的工作模板,我真的很感激。欢迎任何反馈。