问题标签 [blazor-webassembly]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
149 浏览

azure - 令牌在 Blazor WebAssembly 中过期时无法捕获 CosmosException

我正在使用带有 Blazor WebAssembly(客户端)的 Azure CosmosDB。

我想在连接令牌过期时捕获 CosmosException,但没有得到 cosmos 异常,(发现空异常)

我还在控制台应用程序中尝试了相同的代码,因为我能够捕获显示令牌已过期的 cosmos 异常。

代码示例:

控制台应用程序异常详情

0 投票
1 回答
292 浏览

javascript - Blazor RenderTreeBuilder 构建器调整大小

我试图将“resize”事件监听器绑定到我的组件。我不知道为什么,但它不适合我。

public event Action SizeChangedAction;

builder.AddAttribute(5, "resize", SizeChangedAction);

OnMouseUp OnClick 一切正常。

builder.AddAttribute(GetSequenceIndex(), "onmouseup", EventCallback.Factory.Create(component, component.OnMouseUp.InvokeAsync));

有人知道如何让它工作吗?

0 投票
3 回答
6393 浏览

c# - Blazor 无法连接到 ASP.NET Core WebApi (CORS)

我有一个在本地 IP 上运行的https://192.168.188.31:44302带有 Web API 端点的 ASP.NET Core 服务器。我可以使用 VS Code REST Client 连接到所述服务器。现在我想通过在https://192.168.188.31:5555.

我的 Blozor 代码:

当我现在触发时LoginSubmit,我在 Chrome 和 Firefox 的开发者控制台中收到以下错误消息:login:1 Access to fetch at 'https://192.168.188.31:44302/user/authenticate' from origin 'https://192.168.188.31:5555' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

我是 Web 开发的新手,发现您必须在服务器端 ASP.NET Core 项目上启用 CORS,所以我扩展startup.cs

但我仍然收到上述错误消息。我在配置 CORS 时做错了吗?为什么它与 VS Code REST 客户端按预期工作,我如何在 Blazor WASM 应用程序中进行错误调用?

0 投票
1 回答
282 浏览

asp.net-core - 在 WebAssembly 中触发登录操作时发送附加查询字符串

我正在使用最新的 Blazor WebAssembly 3.2.0 构建一个 webassembly 应用程序。我正在为身份提供者使用 Auth0,并且在触发登录操作时,我需要传递其他参数(电子邮件地址)以及 OidcProviderOptions 中定义的所需参数。

有没有办法添加这个附加字段,以便它与现有的查询字符串参数(如 returnUrl)一起进入身份提供者?

这个想法是身份提供者将读取这个额外的查询(电子邮件地址)并在生成登录屏幕时填充用户 ID 字段。我正在使用以下扩展程序来注册提供程序

0 投票
4 回答
3663 浏览

asp.net-core - 使用 Blazor Web Assembly 和 Identity Server 4 的登录错误

我按照微软的 Blazor WebAssembly 独立应用程序教程进行操作。我正在使用 Identity Server 4 以及为登录等而安装的 UI,并且能够查看众所周知的页面。我假设我已经准备好从 blazor 应用程序进行标准登录的一切准备就绪,但我从未进入 Identity Server 的登录页面。相反,当我点击登录链接时,Blazor 应用程序会返回此错误消息:

尝试登录时出错:“无效响应内容类型:文本/html,来自 URL:https:login.microsoftonline.com/.well-known/openid-configuration”

我不确定为什么会发生这种情况,而且我不知道为什么 url 指向 microsoftonline.com。我觉得我在这里错过了一个明显的步骤。我错过了什么?

Blazor 启动设置:

Blazor 应用设置:

Blazor 主要方法:

身份服务器启动设置:

身份服务器配置:

0 投票
1 回答
2489 浏览

c# - SignalR C# 客户端 Hubconnection.On 未触发

我有一个带有 signalR 的 ASPNet.Core WebApi。我有使用 webAPI 的 angular 应用程序,我想用 Blazor Webassembly 应用程序替换它。我在 Blazor 应用程序中遇到 signalR 问题。

我创建了一个 hubconnection,设置它,当服务器发送数据时,Hubconnection.On 方法没有被调用。这是我的代码:

在网络选项卡中,我看到连接正常,我收到了新数据,但是 hubconnection.On 中的方法没有被触发。我仔细检查了方法名称,它是相同的。在 Angular 应用程序中,它工作正常,并且随着数据从服务器发送,服务器代码没有任何问题。

我使用 Fluxor 进行状态管理,并在 'On' 方法中触发了一个操作,为了简单起见,我只是用单个 Console.WriteLine 替换了它。

编辑:添加服务器代码,并收到消息这是服务器代码,更改帐户时会调用“AccountsChanged”:

这是我收到的消息(我从 Postman 发出请求),从网络选项卡复制(为了简单起见,我删除了帐户的其他属性):

0 投票
2 回答
362 浏览

blazor-webassembly - Blazor WebAssembly 身份验证

我正在学习 blazor,并且在验证身份验证方面遇到了一些困难。我有一个托管的 .net core web api 并希望将 blazor web 程序集连接到它,但我发现的所有教程都使用它托管在一个包中的 asp.net core 主机中。像这样在同一台机器上托管时,身份验证的安全性如何?

0 投票
2 回答
89 浏览

blazor - Blazor 对象序列化被截断

我已经很久没有使用 Blazor 编程了,并且遇到了一些序列化问题。我在同一个解决方案中有一个服务器端 Blazor 应用程序和一个客户端。我有一个服务器端控制器,它发送一个 ID,然后检索对象的数据,构建对象,然后将对象返回给客户端。该物体相当大,但最多只有 5 层深。大部分对象被返回,但其余的被截断。我在 MVC 中遇到过类似的问题,并且能够通过更改 web.config 文件中的 maxBufferSize 和 maxMessageSize 来解决它。由于没有 web.config 文件,我该如何以及在哪里进行更改?序列化内置于 JASON

服务器端看起来像

客户端看起来像......

0 投票
1 回答
952 浏览

blazor - 使用 Blazor 客户端 (WebAssembly) 调整图像大小

我有一个需要上传照片的 Blazor (webAssembly) 应用程序。其中大多数只是不需要相机/手机拍摄的 2+mb 大小的文档图片。在测试中,我可以轻松地将文件大小减小到 ~100kb 而不会出现问题。我想在上传到 API 进行处理之前调整这些图像的大小,但由于我使用的是 blazor webassembly,所以我无法找出处理这个问题的最有效方法。我只需要一些简单的东西,但由于 System.Drawing 不支持调整大小或其他解决方案在服务器端工作,因此寻求任何指导。

谢谢

0 投票
2 回答
879 浏览

amazon-cognito - 如何将 OpenID 身份验证从 Blazor WebAssembly 传递到 .NET Core WebApi 后端,两者都使用 Cognito 作为 OpenID 提供程序?

技术目标:

  • 客户端:Blazor WebAssembly
  • 后端: .NET Core 3.1 WebApi on Lambda (AWS) via ApiGateway (/{proxy+})
  • 身份验证:AWS Cognito

后端:

  • 我有一个 .NET Core Lambda 函数,可以通过 ApiGateway /{proxy+} => Lambda 通过 AWS ApiGateway (RestApi) 访问。这部署和工作正常。我已将 WebApi 配置为使用 AWS Cognito 作为其身份验证方法(下面的 Startup..cs:ConfigureServices 代码)。
  • 我可以在我的路由上成功使用 [Authorize] 属性,当我直接在浏览器中使用 [Authorize] 访问路由时,我会被发送到 Cognito 签名页面,我可以登录并被发送回我的 Api 和调用执行。效果很好。

Startup.cs:配置服务

客户端:

  • 我有一个使用 WebAssembly 的基本 Blazor 项目(因此我最终可以将编译后的静态输出放到 AWS S3 上并将其托管在那里)。
  • 我已将项目配置为使用 Cognito 作为其身份验证源(请参阅下面的 Program.cs:Main 代码)并且它工作“正常”(它当然有愚蠢的 Cognito X-Frame-Options 问题,但它可以工作)。

程序.cs:主要

问题 在我的 Blazor 应用程序中,我想调用我的后端 API(需要身份验证)并使用 Blazor 应用程序已经拥有的授权,因为客户端和后端都使用相同的 Cognito 用户池。IE

  1. 加载 Blazor 应用
  2. 完成登录
  3. 对我的后端进行 Http 调用 <--使用 #2 中的登录会话

如何配置 HttpClient 实例以通过使用 Cognito 进行身份验证来发送 Blazor 应用程序具有的授权,以便它可以调用受保护的 API?