我是 Blazor 新手,正在尝试了解不同托管模型之间的差异。
根据我的阅读,我了解到 Blazor 服务器端和 Blazor WebAssembly Hosted 都有服务器端代码,两者都使用 Signal R 与客户端通信。
那么它们之间有什么区别呢?这些的客户端部署在哪里?他们与Server的连接有什么区别?如果 Web 应用程序依次调用第 3 方 Web API,则调用如何路由?
我发现的一个区别在于项目结构。Blazor 服务器端只有一个项目(带有数据文件夹)。Blazor WebAssembly Hosted 有 3 个项目(.Server、.Client 和 .Shared)。
我只有一个快速的问题。有没有办法热重载 blazor 应用程序?至少,.razor 文件?现在我将我的应用程序托管在本地 IIS(不是 IIS express)上。
我正在浏览互联网,但没有发现任何有用的东西。
谢谢大家的回答:)
c# blazor blazor-server-side blazor-client-side blazor-webassembly
我正在将 Visual Studio 2022 用于 Blazor WebAssembly 项目和 ASP.NET Core API 项目。当我独立运行这些项目时,它们在 Edge、Chrome 浏览器中运行良好,但是当我选择多启动项目时,出现以下错误。
发生一个或多个错误。
无法启动调试适配器。输出窗口中可能会提供其他信息。
我有一个运行 Net 6 Preview 4 的简单 Blazor WASM,我使用本指南进行设置:
确切的代码与 Net 5.0 完美配合(使用相应的 Net 5.0 程序集)
但是,当我升级到 Net 6 时,我收到以下身份验证错误:
There was an error trying to log you in: 'Cannot read property 'toLowerCase' of undefined'
Run Code Online (Sandbox Code Playgroud)
我似乎也无法获得更多细节。这是在 Azure 应用服务自包含发布上发布的。
代码可以在这里找到: https ://github.com/aherrick/BlazorWASM.Net6Prev4.AzureAD
我知道调用该StateHasChanged()方法会通知组件状态已更改,因此它应该重新渲染。
但是,我也看到调用await InvokeAsync(StateHasChanged)或await InvokeAsync(() => StateHasChanged())在其他人的代码中,但我不太明白它与其他人的代码有何不同StateHasChanged()以及应该在何处选择一个,以及为什么.
我能找到的唯一信息是Blazor 文档的这一部分,它说:
如果必须根据外部事件(例如计时器或其他通知)更新组件,请使用 InvokeAsync 方法,该方法分派到 Blazor 的同步上下文。
我不太明白这个。它只是说“......它调度到 Blazor 的同步上下文”,但我对此不太满意!什么是“Blazor 的同步上下文”?
我试过在 a的事件中调用StateHasChanged()- 而不是InvokeAsync(StateHasChanged)- ,它按预期工作,没有任何问题。我应该打电话吗?!如果是这样,为什么?我觉得这里可能有一些我不知道的重要细微差别。TimerElapsedawait InvokeAsync(StateHasChanged)
我也看到过类似的电话InvokeAsync(() => InvokeAsync(Something)),为什么?
另外,我有时也会看到InvokeAsync()没有调用await,那有什么关系?!
我刚刚为 .net 6 创建了 Blazor Web Assembly 解决方案,并选择了“个人帐户”和“ASP.NET Core 托管”。
此消息显示在 .Server 项目的 ReadMe.txt 中:
此代码包含对 Duende IdentityServer 的依赖项。这是一个具有互惠许可协议的开源产品。如果您计划在生产中使用 Duende IdentityServer,这可能需要支付许可费。要了解如何使用 Azure Active Directory 作为您的身份,请参阅https://aka.ms/aspnetidentityserver要了解您是否需要 Duende IdentityServer 的商业许可证,请参阅 https://aka.ms/identityserverlicense
因此,看起来 Microsoft 正在为其 Blazor WA TEMPLATE Server 元素使用非常昂贵的商业软件。
首先,在他们的 Blazor 模板中包含商业软件是荒谬的 - 我只能假设他们在切换到“Duende”之前就开始使用它,并且它不再是免费的。
对于大多数仅出于身份目的的项目来说,1000 美元的年费(取决于项目)是不可接受的。
我可以在.Server项目中看到这个包:Microsoft.AspNetCore.ApiAuthorization.IdentityServer
如果我删除它,我认为我已经从项目中删除了 Duende 商业软件的所有痕迹?
另外,是否有任何方法可以使用不使用商业软件(或 Microsoft Identity Platform)的服务器元素(用于身份验证等)来模板化 Blazor Web Assembly 项目。
例如,在服务器上使用 .net Core Identity 进行身份验证就可以了 - 但我猜这不作为模板存在?
谢谢。
尝试使用Microsoft 提供的本指南从 ASP.NET Core 3.1 迁移到 5.0 。
安装了带有运行时的 SDK 5.0.100-rc.1。按照指南更新项目,但仍然出现以下错误:
There was no runtime pack for Microsoft.AspNetCore.App available for the specified RuntimeIdentifier 'browser-wasm'
Run Code Online (Sandbox Code Playgroud)
项目文件:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>*****</UserSecretsId>
</PropertyGroup>
...
Run Code Online (Sandbox Code Playgroud)
找不到与此错误相关的任何内容。我不知道在哪里搜索更多信息。
谢谢你的任何想法。
Blazor 中有哪些库/技术可用于 WebAssembly (wasm) 的状态管理。
很高兴了解不同方法的优缺点。
我安装了 Visual Studio 2019 16.6.2,以及 .NET Core 3.1.301 SDK 和所有必要的 Blazor 模板。
如果我创建了一个全新的 Blazor WebAssmbly 应用程序,我可以通过按Ctrl+从 Visual Studio 运行它F5,它会在我的活动浏览器窗口中打开一个新选项卡并正常启动。
但是当我按下 时F5,会打开一个新的、单独的浏览器窗口(这有点烦人),但页面会停留about:blank一段时间,直到 Visual Studio 中出现错误消息:
Failed to launch debug adapter. Additional information may be available in the output window.
Unable to launch browser:
"Could not open wss://localhost:5001/_framework/debug/ws-proxy?browser=wsAFFlocalhostA50821FdevtoolsFbrowserFceed3b95-58ac-470a-b10c-5d139cfd7117": timeout after 60000ms
Run Code Online (Sandbox Code Playgroud)
Blazor WebAssembly 应用程序是否“托管”并没有什么区别。
我已按照在 ASP.NET Core 中执行 HTTPS 中的步骤进行操作,但这并没有什么区别。
如果在等待about:blank窗口崩溃时,我在浏览器选项卡上手动打开客户端 url,应用程序将加载并命中调试器断点。在短短的一段时间之前,它不断的崩溃,如果我打Shift+ Alt+D我总是得到以下错误: …
visual-studio-debugging blazor visual-studio-2019 blazor-client-side blazor-webassembly
在我的 Blazor WebAssembly 客户端中,我有以下应用程序设置:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么在本地运行时,我的浏览器控制台仍然会出现无尽的问题呢?
info: System.Net.Http.HttpClient.MyNamedClientName.ClientHandler[101]
Received HTTP response headers after 190ms - 200 blazor.webassembly.js:1:9737
info: System.Net.Http.HttpClient.MyNamedClientName.LogicalHandler[101]
End processing HTTP request after 193ms - 200 blazor.webassembly.js:1:9737
info: System.Net.Http.HttpClient.MyNamedClientName.ClientHandler[101]
Received HTTP response headers after 267ms - 200 blazor.webassembly.js:1:9737
info: System.Net.Http.HttpClient.MyNamedClientName.LogicalHandler[101]
End processing HTTP request after 274ms - 200 blazor.webassembly.js:1:9737
info: System.Net.Http.HttpClient.MyNamedClientName.ClientHandler[101]
Received HTTP response headers after 316ms - 200 blazor.webassembly.js:1:9737
info: System.Net.Http.HttpClient.MyNamedClientName.LogicalHandler[101]
End processing HTTP request after 319ms - …Run Code Online (Sandbox Code Playgroud)