问题标签 [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 回答
333 浏览

c# - Blazor SignalR 错误 - 不支持属性凭据

我正在使用 Blazor WebAssembly 并尝试使用 Microsoft.AspNet.SignalR.Client 连接到 SignalR 服务器(ASP.NET SignalR,而不是 ASP.NET Core SignalR)。代码如下所示:

我得到以下异常:

我没有设置 的Credentials属性hubConnection,它是null. 据我从错误消息中可以看出,客户端尝试设置Credentials属性,而 Blazor 不支持此设置。我能做些什么来避免这种情况?我不需要使用Credentials,我在查询字符串中传递了所有服务器需要。相同的代码在控制台应用程序中运行良好。

0 投票
2 回答
645 浏览

blazor - Blazor WebAssembly Server 项目如何引用客户端索引?

使用模板:启用了 ASP.NET Core 托管的 Blazor WebAssembly 应用程序

它创建项目:

  • BlazorApp1.Client
  • BlazorApp1.Server

我可以看到服务器有一个对客户端的项目引用,但我无法确定哪些代码允许服务器显示客户端?

服务器如何知道客户端索引文件在另一个程序集中?

客户端代码是否托管在同一端口上的服务器项目中?

试图弄清楚这一点,我有点迷失了。

0 投票
7 回答
9142 浏览

visual-studio-2019 - 无法从 Visual Studio 2019 16.6.2 调试 Blazor 托管的 webassembly 3.2.0

我安装了 Visual Studio 2019 16.6.2,以及 .NET Core 3.1.301 SDK 和所有必要的 Blazor 模板。

如果我创建一个全新的 Blazor WebAssmbly 应用程序,我可以通过按Ctrl+从 Visual Studio 运行它F5,它会在我的活动浏览器窗口中打开一个新选项卡并正常启动。

但是当我按下 时F5,会打开一个新的、单独的浏览器窗口(这有点烦人),但页面会停留about:blank一段时间,直到 Visual Studio 中出现错误消息:

Blazor WebAssembly 应用程序是否“托管”并没有区别。

我已经按照在 ASP.NET Core 中强制 HTTPS 中的步骤进行操作,但这并没有什么区别。

如果在等待about:blank窗口崩溃时,我在浏览器选项卡上手动打开客户端 url,应用程序加载并且调试器断点被命中。在它继续崩溃之前的短时间内,如果我点击Shift+ Alt+ ,D总是会收到以下错误:

无论我多久运行一次命令(关闭所有浏览器实例,重新启动等),我每次都会得到这个。

这发生在 Edge 84 (Edgium) 和 Chrome 中。

我应该能够创建一个新的 Blazor WebAssembly 应用程序并开箱即用地F5使用 Visual Studio。我错过了什么?

更新

我刚刚尝试使用“旧 Edge”(EdgeHtml)和 Firefox 作为 Visual Studio 中的调试浏览器,并且两者都按预期工作(这意味着应用程序至少在按下 时启动F5)。问题似乎是基于 Chromium 的浏览器然后......

更新 2

@JamesHancock 在评论中发布了一个足够简单的解决方法。对于完整的解决方案(和解释),我已经记录了ASP.NET Core 团队的 Github 问题。

0 投票
1 回答
661 浏览

asp.net-core - 404 将 asp.net core 托管的 blazor webassembly 部署到 Netlify

我正在尝试将一个 asp.net 核心托管的 blazor webassembly 应用程序部署到 Netlify。我已经将Server项目的release版本发布到了我桌面的一个目录中,并上传到了github。我将 Netlify 的发布目录设置为 wwwroot 并且该站点确实呈现得很好。但是,如果我尝试调用 api 控制器,它会返回 404。具体来说,这是我的代码:

我发送的 url 请求是:https://(NetlifyDefaultDomain)/api/Register/Post。但是,我收到 404 响应。在本地主机上它工作得很好。我想象有一个设置,我必须在某处更改才能使请求 URL 起作用。我试过寻找,但找不到指导。我需要改变什么?谢谢

编辑

这是我的客户项目的 Program.cs 文件

目标框架是netstandard2.1,它是webassembly 3.2.0。

0 投票
1 回答
173 浏览

xamarin.forms - 仅 xamarin 表单应用程序的 Asp.net Core 授权失败

我开发了一个简单的应用程序来练习。该组合是带有 JWT 令牌的 ASP.NET CORE。

在我的 asp.net core 3.1 服务器上,我有这个 DI 代码:

我可以轻松地与 Postman 或我的 BlazorApp 连接以生成令牌并使用令牌使用其他端点。在 Blazor 上,我只需要插入一个 DefaultHeader:

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);

现在,我正在尝试对 Xamarin Forms 应用程序做同样的事情。我尝试在默认标头上使用生成的令牌,但我得到了未经授权的响应。

要调试 Xamarin Forms 应用程序,我必须将我的 localhost 端点名称更改为 127.0.0.1(以便模拟器可以访问我机器上的 asp.net API)。

我试图将我的 JWT 令牌的颁发者更改为 127.0.0.1 而不是 localhost 但没有成功。

有人可以帮忙吗?

提前致谢。

0 投票
0 回答
710 浏览

javascript - 从 JSInterop 调用返回图像时,Blazor WebAssembly 出现“内存访问越界错误”

我有一个 Blazor WebAssembly 应用程序从计算机网络摄像头捕获视频。链接到网络摄像头的视频元素被隐藏。视频提要被绘制到 HTML 画布元素。

我正在使用 JSInterop 在画布上调用 GetImageData()。该函数将部分画布的图像作为图像返回。

当我从 JavaScript 函数返回图像时,我得到:

“dotnet.wasm:1 Uncaught (in promise) RuntimeError: memory access out of bounds error”

这是HTML:

这是导致问题的代码。我已将其缩小到 OnTimedEvent 中的行:

这是JavaScript:

0 投票
1 回答
699 浏览

blazor - 如何在 Blazor WebAssembly 应用程序中使用 StackExchange.Redis?

我尝试ConnectionMultiplexer.ConnectAsync通过以下方式调用 Blazor 客户端组件:

这会引发异常:

无法评估孩子

如何StackExchange.RedisBlazor WebAssembly应用程序中使用?

编辑:

我在 VS 输出中发现了更详细的错误消息:

System.NotSupportedException:无法在此运行时启动线程。在 System.Threading.Thread.StartInternal(System.Object 主体,System.Threading.StackCrawlMark 和 stackMark)的(包装器托管到本机)System.Threading.Thread.Thread_internal(System.Threading.Thread,System.MulticastDelegate)<0x3b02590 + 0x00008> in :0 at System.Threading.Thread.Start (System.Threading.StackCrawlMark& stackMark) <0x3b02450 + 0x0004e> in :0 at System.Threading.Thread.Start (System.Object 参数) <0x3b022d0 + 0x0003a> in :0 在 Pipelines.Sockets.Unofficial.DedicatedThreadPoolPipeScheduler.StartWorker (System.Int32 id) [0x0003a] 在 C:\Code\Pipelines.Sockets.Unofficial\src\Pipelines.Sockets.Unofficial\DedicatedThreadPoolPipeScheduler.cs:112 在 Pipelines.Sockets .Unofficial.DedicatedThreadPoolPipeScheduler../src/StackExchange.Redis/SocketManager.cs:98 在 StackExchange.Redis.SocketManager..ctor (System.String name, System.Int32 workerCount, System.Boolean useHighPrioritySocketThreads) [0x00000] in //src/StackExchange.Redis/SocketManager .cs:44 在 StackExchange.Redis.SocketManager.get_Shared () [0x0000c] in / /src/StackExchange.Redis/SocketManager.cs:132 在 StackExchange.Redis.ConnectionMultiplexer.OnCreateReaderWriter (StackExchange.Redis.ConfigurationOptions 配置) [0x00000]在 / /src/StackExchange.Redis/ConnectionMultiplexer.ReaderWriter.cs:9 在 StackExchange.Redis.ConnectionMultiplexer..ctor (StackExchange.Redis.ConfigurationOptions 配置) [0x000d6] 在 //src/StackExchange.Redis/ConnectionMultiplexer.cs:1150 在 StackExchange.Redis.ConnectionMultiplexer.CreateMultiplexer(System.Object 配置,StackExchange.Redis.ConnectionMultiplexer+LogProxy 日志,System.EventHandler`1[StackExchange.Redis.ConnectionFailedEventArgs]&connectHandler) [0x0000d] 在 //src/StackExchange.Redis/ConnectionMultiplexer.cs:957 在 /_/src/StackExchange.Redis/ConnectionMultiplexer.cs 中的 StackExchange.Redis.ConnectionMultiplexer.ConnectImplAsync(System.Object 配置,System.IO.TextWriter 日志)[0x0003a]: 854 在 Joker.BlazorApp.Sample.Pages.ProductsComponentBase.OnInitializedAsync () [0x0007c] 在 C:\Users\tomas.fabian\source\repos\Joker.BlazorApp.Sample\Joker.BlazorApp.Sample\Pages\ProductsComponentBase.cs: 52 在 Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync () <0x37da140 + 0x0013a> 在:0

0 投票
1 回答
1156 浏览

c# - 与 3 个子组件共享状态和处理事件 | 通量器

我是 Fluxor 和它所基于的 redux/flux 模式的新手。我目前正在从事 Blazor wasm 项目。我选择使用fluxor进行状态管理。但我想知道如何处理以下情况:

当页面被加载时,组件 1 会通过 Fluxor 状态管理填充来自 API 的数据。

组件 1 是一个列表,其中包含用户可以选择的项目。单击该项目时,应从 API 检索并在组件 3 中完整显示。表示活动项目的文本显示在组件 2 中。

组件 2 是一个导航器,它使用简单的后退和下一步按钮浏览列表。单击下一步时,组件 3 应从 API 检索下一个项目并完整显示该项目。然后,组件 1 通过显示选择了列表的哪个项目来反映此更改。

潦草的

我确实有行动等来获得完整的项目。我只是不确定从哪里发送它。或者如何确保所有组件都知道活动项目是什么。使用“纯” blazor,我将通过事件回调来完成所有这些,并在本地处理活动项目状态。但这会破坏通量器的意义。

0 投票
2 回答
1544 浏览

httpclient - Blazor Webassembly - 调用外部 API

我一直在尝试从 Blazor 客户端 Web 程序集中调用单独的 asp.net 核心 Web api。我在这个控制器中使用了模板 Web API 模板。我在 startup.cs 中设置了 CORS。我在 Blazor 客户端中使用标准 HTTP 客户端。在本地运行,我可以在 API 代码上设置一个断点并查看它是否被命中。但是客户端抛出异常:类型错误

任何帮助将不胜感激。

大卫

0 投票
1 回答
1395 浏览

blazor - NavigateTo 不会立即显示新页面

我有一个带有列表和编辑页面的 Blazor WebAssembly 应用程序。

当我查看实体列表并单击其中一个进行编辑时,使用 NavLink 组件,浏览器导航到编辑页面,显示我的加载器组件,直到页面加载。

这很好用。

当我在我的编辑页面上单击保存时,如果成功,我会导航回我的列表页面。

我期望发生的是它会导航到 List 页面,再次显示我的 Loader 组件,然后呈现 List 页面。

但是会发生什么,它会一直停留在编辑页面上,直到呈现列表页面,我从来没有看到我的加载器组件,它对用户来说,看起来就像它只是挂在编辑页面上。

OnValidateSubmitAsync解决方法是在保存实体后在 中显示我的加载器。

我是 Blazor 的新手,页面生命周期仍在下降,所以我的方法可能不正确。只是对这里发生的事情有点困惑,以及是否有办法强制列表页面与加载器一起显示。

希望这有点道理。