【问题标题】:How can I tell if code will run on the client or server with Blazor?如何判断代码是否将在使用 Blazor 的客户端或服务器上运行?
【发布时间】:2020-04-05 17:25:01
【问题描述】:

我是 Blazor 开发的新手,我可能在这里遗漏了一些明显的东西,但是搜索谷歌、阅读文档和搜索这个网站并没有为我找到答案。

出于安全原因(例如散列密码),我需要确保在服务器端运行一些代码。我知道 Blazor 通常会自动确定代码将在何处运行,但在这种情况下,我是否可以确保某些功能在客户端和某些服务器端运行?

【问题讨论】:

  • 您使用 Blazor 服务器还是 Blazor wasm ?
  • 我正在编写我知道在 WASM 中运行的页面,但我有一些类被调用,我不确定它们是否也在客户端运行,如果是,我如何让它们运行服务器边。我敢肯定这听起来很愚蠢,但我不知道如何区分。我将 Visual Studio 与 IIS Express 一起使用,因此我无法分辨服务器上正在运行什么以及正在为客户端提供什么以及在 WASM 中运行什么。
  • 当你有一个 Blazor/Wasm 应用程序时,一切都在客户端运行,直到你使用 HttpClient 调用服务器。
  • “Blazor 通常会自动确定代码将在何处运行” 不正确。
  • 谢谢你们。我想你回答了我的问题:我叫错了树。回到原来的文档。

标签: c# blazor


【解决方案1】:

Blazor Server 是在服务器上运行所有代码的应用程序模型,包括 Blazor UI 组件和相关代码。这被翻译成通过 SignalR 发送的 HTML 差异消息。

Blazor WASM (WebAssembly) 是 Blazor UI 组件下载到并在客户端上运行的地方。因此,任何敏感或机密代码都不应包含在该项目中。

两者之间的选择最初是在选择项目类型时完成的:

如果您有 Blazor WASM 应用程序,那么您可以根据需要决定在服务器上运行某些功能。标准的“ASP.NET Core 托管”示例通过将天气预报服务实现为 Web API 方法来实现这一点(请参阅WeatherForecastController.cs)。

您可以安全地将代码托管在客户端永远无法访问的 ASP.NET Core 服务器应用程序中,除非通过您提供的方法,例如Web API 方法。

与安全或验证有关的任何事情都是一个很好的例子。任何密码哈希码都应该始终在服务器上,而不是在客户端上。

希望这有助于清除它

【讨论】:

  • 对于未来的读者,Visual Studio 不包括版本 16.5.2 的 Blazor WebAssembly 应用程序模板。要使用该模板,您需要打开 NuGet 包管理器控制台并请求包。为此,请导航到工具 > NuGet 包管理器控制台并粘贴以下内容:dotnet new --install Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-preview3.20168.3 Click here 以检查最新版本。
  • 感谢@Razick 的澄清 - 我应该提到 WASM 客户端不是标准的。另请注意,如果您安装了 .NET 5 预览版,将显示服务器应用程序,但不会显示 WASM 模板 - 它们仍然是 .NET core 3.1
猜你喜欢
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2016-08-06
  • 2020-10-22
  • 1970-01-01
相关资源
最近更新 更多