对我来说,Blazor 开发的最大不适是在源代码中对样式进行微小更改后的简单刷新页面。自从 ASP.NET 诞生以来,这个机会就出现了——我们在 HTML 或代码中改变了一些东西,而不是在浏览器中简单地点击刷新,新页面立即出现在浏览器中。但是在 Blazor 开发中,即使在代码或 HTML 发生微小变化后,我们也必须停止 Web 服务器,然后再次启动完整的源代码编译,编译成功结束后,将启动 IIS 并启动浏览器。即使在那之后 HTML 页面也会显示在浏览器中。在 Classic ASP.NET 中,我们有更快的开发方法 - Visual Studio 设计器,直接显示任何 HTML 更改。当前的 Blazor 开发过程使 Web 开发速度减慢了数百万次。
在 sudo docker swarm join --token XXXXX YYY.YYY.YYY.YYY:2377 后,我可以作为工作人员成功附加到 swarm。然后我从辅助/从属节点离开该群并使用管理令牌重试。并收到:
来自守护进程的错误响应:管理器已停止:无法初始化 raft 节点:rpc 错误:代码 = 未知 desc = 无法使用其公布的地址连接到预期的新集群成员:rpc 错误:代码 = DeadlineExceeded desc = 超出上下文截止时间
两个节点直接相互连接。两个节点中的防火墙均不起作用。造成这个问题的原因是什么?
我完全按照 MS 规则定义我的强类型 SignalR 集线器
public class OutputMessages : Hub<IOutputMessages>
{...}
Run Code Online (Sandbox Code Playgroud)
比用同样的方式将我的 SignalR hub 注入到控制器中
public class ApplicationAPIController : ControllerBase
{
public ApplicationAPIController(IHubContext<OutputMessages, IOutputMessages> _outputMessages)
{...}
}
Run Code Online (Sandbox Code Playgroud)
在启动中我将 SignalR 服务添加为
services.AddSignalR()
.AddHubOptions<OutputMessages>(options =>
{
options.EnableDetailedErrors = true;
})
Run Code Online (Sandbox Code Playgroud)
并定义端点
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<OutputMessages>("/OutputMessages", options =>
{
options.Transports =
HttpTransportType.WebSockets |
HttpTransportType.LongPolling;
});
});
Run Code Online (Sandbox Code Playgroud)
看起来不错?是的。而且编译也不错。但在运行时我收到
fail: Microsoft.AspNetCore.SignalR.HubConnectionHandler[1]
Error when dispatching 'OnConnectedAsync' on hub.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.SignalR.Hub`1[IOutputMessages]' while attempting to activate 'OutputMessages'.
at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, …Run Code Online (Sandbox Code Playgroud)