问题标签 [blazor-server-side]

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 回答
506 浏览

blazor - 客户端 Blazor 代码能否“听到”服务器端引发的事件?

客户端 Blazor C# 代码可以订阅服务器端引发的事件吗?

0 投票
1 回答
1414 浏览

blazor - 如何使用 Blazor 服务器端配置 Azure SignalR?

开发 Blazor 服务器端应用程序 该应用程序不能停机,因此即使其中一个 Web 应用程序实例回收,连接也必须保持稳定。因此,我试图通过 Azure SignalR 服务而不是特定的 WebApp 实例将 SignalR 通信从服务器端 Blazor 引导到客户端。

在 Blazor 项目的哪个位置指定我自己的 Azure SignalR 服务?

0 投票
1 回答
1942 浏览

c# - C# Blazor - 修复“此连接与环境事务一起使用...”

我在 Blazor 页面中添加了一个计时器,因此一些数据(从数据库中提取)可以每 5 秒刷新一次。当我在页面上时它工作正常,但是当我移动到另一个页面并返回到原来的页面时,我收到了这个错误:

“此连接与环境事务一起使用。原始环境事务需要先完成,然后才能在外部使用此连接”我在末尾包含了堆栈跟踪

我试图在页面处理时处理 Timer,但没有解决。看起来这个问题是由于数据库上下文是如何在依赖注入容器中注册的,但是

这是我页面的 C# 代码。它调用主服务,后者又通过存储库获取数据。

这是注册 DB 上下文的 startup.cs 的摘录:

这是错误的堆栈跟踪

System.InvalidOperationException HResult=0x80131509 Message=此连接用于环境事务。需要先完成原始环境事务,然后才能在外部使用此连接。Source=Microsoft.EntityFrameworkCore.Relational
StackTrace:在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.HandleAmbientTransactions() 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.d__42.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在系统。 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable1.AsyncEnumerator.d__12.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在System.Runtime.CompilerServices.TaskAwaiter 1.GetResult() at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__72.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)在 System.Runtime.CompilerServices.TaskAwaiter 1.GetResult() at Microsoft.EntityFrameworkCore.Query.Internal.AsyncQueryingEnumerable1.AsyncEnumerator.d__11.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1.ConfiguredTaskAwaiter.GetResult() at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIterator2.d__7.MoveNext() 在 D:\a\1 \s\Ix.NET\Source\System.Interactive.Async\Select.cs:System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
处的第 106 行 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在系统处。 Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable1.ConfiguredTaskAwaiter.GetResult() at System.Linq.AsyncEnumerable.AsyncIterator1.d__10.MoveNext() 在 D:\a\1\s\Ix.NET\Source\System.Interactive.Async\AsyncIterator.cs: 系统中 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 的第 112 行。 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 System.Runtime.CompilerServices.TaskAwaiter 的 Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)1.GetResult() at Microsoft.EntityFrameworkCore.Query.Internal.AsyncLinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.d__5.MoveNext() 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo System.Linq.AsyncEnumerable.d__6
的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的3.MoveNext() in D:\a\1\s\Ix.NET\Source\System.Interactive.Async\Aggregate.cs:line 120 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.Throw() SIQC.Enterprise.GenericRepository.Common.IQueryableExtensions.d__1的 GetResult()1.MoveNext() in C:\TFS\[...]\IQueryableExtensions.cs:line 28 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 在 SIQC.Enterprise.GenericRepository.RepositoryBase.ReadOnlyRepository 1.<GetAsync>d__12.MoveNext() in C:\TFS\[...]\ReadOnlyRepository.cs:line 174 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 在 ToolsWebManagementData.IntravexV21.Repository.TaskProcessQueueRepository.d__2.MoveNext() 在 C:\TFS[...]\TaskProcessQueueRepository.cs:line 46 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at TWMBlazorSSB.Services.MainService.<GetRunningTaskProcessQueueCountByTaskAppAsync>d__21.MoveNext() in C:\TFS\[...]\MainService.cs:line 79 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at TWMBlazorSSB.Pages.TaskApp.TaskApps.d__7.MoveNext() in C:\TFS[...]\TaskApps.razor:line 91 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System .Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at TWMBlazorSSB.Pages.TaskApp.TaskApps.<b__6_0> d.MoveNext() 在 C:\TFS[...]\TaskApps.razor:line 79

任何帮助,将不胜感激。谢谢

0 投票
7 回答
2071 浏览

blazor-server-side - “TransformAppSettings”任务意外失败

我有一个 .NET Core 3 Blazor(服务器端)应用程序,我最近从预览版 5 升级到了 .NET Core 3.0.1 预览版 6 版。当我在本地构建和运行它时,它工作正常;但是当试图将它发布到文件系统文件夹(在框架依赖模式下)时,它会抛出这个错误:

C:\Program Files\dotnet\sdk\3.0.100-preview6-012264\Sdks\Microsoft.NET.Sdk.Publish\targets\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(192,5):错误MSB4018:“TransformAppSettings”任务意外失败。System.IO.FileNotFoundException:无法加载文件或程序集“Newtonsoft.Json,Version=10.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。文件名:'Newtonsoft.Json,版本=10.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed'

在 Microsoft.NET.Sdk.Publish.Tasks.TransformAppSettings.TransformAppSettingsInternal() 在 Microsoft.NET.Sdk.Publish.Tasks 的 Microsoft.NET.Sdk.Publish.Tasks.AppSettingsTransform.UpdateDestinationConnectionStringEntries(String destinationAppSettingsFilePath, ITaskItem[] destinationConnectionStrings)。在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 的 TransformAppSettings.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

值得一提的是,在预览版 5 中没有出现此错误。另外,我使用 Visual Studio Enterprise 2019 (Windows)。

到目前为止我尝试过的事情:(没有运气)

  • 清洁/重建解决方案
  • 重新安装 .NET Core 3 预览版 6 SDK
  • Newtonsoft.Json通过 Nuget添加包
  • 在github上搜索社区提出的相关问题

.csproj文件

0 投票
1 回答
242 浏览

asp.net-core - 使用 Azure 应用服务发布 Blazor 应用

我有一个服务器端 Blazor 应用程序,我想使用 Azure 应用程序服务发布它。当我从 Visual Studio 中发送发布命令时,我收到了这条消息。

在此处输入图像描述

这是否意味着我现在无法使用此方法发布服务器端 Blazor 应用程序?什么是替代方法?

0 投票
4 回答
10590 浏览

blazor - InputText 需要“ValueExpression”参数的值

我希望能够使用 Blazor(服务器端渲染)渲染表单,但我没有得到正确的语法。

但我得到这个错误

Microsoft.AspNetCore.Components.Forms.InputText 需要“ValueExpression”参数的值。通常这是在使用“绑定值”时自动提供的。

一个人如何渲染页面并向服务器发送一个简单的帖子?

0 投票
1 回答
1063 浏览

asp.net-mvc - 在服务器端 Blazor (3.0.0-preview.6) 中添加 JWT Bearer 身份验证

我正在尝试使用 Azure B2C 添加 JWT Bearer 身份验证。我正在使用默认项目模板来创建具有身份验证的 Blazor 服务器端应用程序。我在创建页面选择了 B2C 身份验证,它设置了默认身份验证使用

这很好用。

我正在尝试添加 JWT Bearer 身份验证。这是我正在使用的代码:

此外,我添加"ClientId": "my_client_id"到配置部分,因为它是该方案所必需的,这里的代码指出它在使用此方案时使用 https://github.com/aspnet/AspNetCore/blob/a784f4575b738ec5b7c6f5cfff2b1fee10de5118/src/Azure/AzureAD/Authentication.AzureADB2C .UI/src/AzureADB2CJwtBearerOptionsConfiguration.cs#L32

但是,尝试登录时出现错误Sorry, there's nothing at this address.

这表明内置控制器没有受到打击(下面的链接)。

我也尝试将登录链接从/AzureADB2C/Account/SignInto修改/AzureADB2C/Account/SignIn/AzureADB2CJwtBearer,但得到了相同的结果。这里的代码建议方案名称应该传递给控制器​​方法,这就是我这样做的原因,但仍然是同样的问题。 https://github.com/aspnet/AspNetCore/blob/a784f4575b738ec5b7c6f5cfff2b1fee10de5118/src/Azure/AzureAD/Authentication.AzureADB2C.UI/src/Areas/AzureADB2C/Controllers/AccountController.cs#L26

我知道最近才添加了身份验证,这仍然是实验性的,并且查看看起来应该支持 JWT 的代码,所以我想知道我是否遗漏了一些东西。任何帮助是极大的赞赏。

0 投票
1 回答
2546 浏览

asp.net-core - 使用服务器端 Blazor 动态填充选择列表的问题

尝试动态填充选择下拉列表,并且每次运行它时,我都可以通过 @foreach 块一直很好地单步执行代码,但随后它似乎陷入了连续循环或其他东西,并且将完全冻结一切!挣扎,因为甚至没有发生错误。

“/api/Reps/Index”控制器单独工作就好了。我什至更新了它,只返回一个代表,看看这是否是一个问题,但没有任何区别。

*注意:使用 MatBlazor 实现 Material Design。

我的 .Razor 页面:

这也是我的 RepsController.cs 代码:

0 投票
1 回答
68 浏览

c# - 在将对象作为参数传递给组件后,我似乎无法从表达式中读取对象

Blazor - .NET Core 3 预览版 6

我正在尝试构建将属性作为 lambda 表达式的组件,然后为用户提供有关该属性的信息。

如果我声明对象并将其直接绑定为组件上的表达式,我似乎能够获取所有数据。但是,如果我首先将对象作为参数传递给组件,然后以嵌套方式绑定表达式,则会出现错误

测试组件:

包装组件

测试页

仅运行第一个组件 TestComponent 可以正常工作。如果我改为运行第二个组件 WrapperComponent,我会得到以下信息:

我错过了什么?

0 投票
1 回答
4330 浏览

c# - 带有 IdentityServer4 的 Blazor(服务器端)

我正在尝试让 IdentityServer4(带有本地 API)与 Blazor(服务器端)前端一起工作。

我已经能够创建 IdentityServer 后端。登录功能正常工作,它根据后端的 ASP.NET 身份设置进行身份验证。一旦通过身份验证,我就可以(使用 Postman)获取 Bearer 令牌并调用 API 以获得成功的结果。

我想知道是否有人知道如何:

  1. 转到需要授权的页面时自动重定向 Blazor(服务器端)
  2. 用户成功登录 IdentityServer 后,如何将该信息传递到 Blazor 应用程序的 context.User 中。如果这是可能的,我可能在这里有错误的术语。

我希望最终的决定不仅仅是使用 odic-client.js 来进行这些调用。即使这是结果,是否有可能从 IdentityServer 取回该信息并将其推送到 context.User 中?

更新:

我已经能够将 Blazor 网站直接连接到 IdentityServer(不是 #1 中想要的自动直接)来测试功能。

returnUrl 从 IdentityServer 重定向(成功登录后)。这看起来也像是将 AspNetCore.Identity.Application cookie 写入 Blazor 网站 cookie。

有没有办法从 cookie 中获取该信息(如果它包含用户和不记名令牌)?

更新:

我发现 Blazor 代码似乎正在尝试读取 cookie,但我不知道如何验证。我在输出中得到这个: