【发布时间】:2022-09-28 20:02:47
【问题描述】:
我想在我的 WPF (.NET Core 6) 应用程序中自托管 ASP.Net Core SignalR 集线器。我使用 Autofac 作为我的 DI 容器,使用 Caliburn.Micro 作为我的 MVVM 框架。
让托管的 SignalR 集线器在应用程序启动时启动:
protected override async void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
host = Host.CreateDefaultBuilder()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder => webBuilder
.UseUrls(\"http://localhost:5100\")
.ConfigureServices(services => services.AddSignalR())
.Configure(app =>
{
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapHub<RemoteControlHub>(\"/remote\"));
}))
.Build();
await host.StartAsync();
}
如何将 SignalR IHubContext 注入到我的模型类中?我需要在我的 ConfigureContainer(ContainerBuilder builder) 方法中注册什么,以便我的应用程序类可以执行以下操作:
public MyViewModel(
ILogger logger,
IHubContext<RemoteControlHub> hub)
{
// do something with hub
}
我无法切换到 Microsoft DI,所以这是专门针对 Autofac 的。
-
您的视图模型是否由主机 DI 容器激活?
-
是的,我的视图模型是由 DI 容器激活的。我使用带有 Autofac 引导程序的 Caliburn Micro 来构建和连接所有依赖项。
-
DI 容器还是另一个 DI 容器?看起来你可能有 2 个。
标签: autofac caliburn.micro asp.net-core-signalr