Я пытаюсь использовать SignalR с объединительной платой MS Orleans, используя эту библиотеку https://github.com/OrleansContrib/SignalR.Orleans
Когда я добавил .AddOrleans () в AddSignalR (), как инструкция в файле readme, но это вызывает эту ошибку в коде UseSignalR () в Configure:
Невозможно разрешить службу для типа 'Orleans.IClusterClient' при попытке активировать 'SignalR.Orleans.DefaultClusterClientProvider'. '
ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddSignalR().AddOrleans();
}
Настройка:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseSignalR(routes =>
{
routes.MapHub<Hubs.MainHub>("/main");
});// this code work if I remove AddOrleans in ConfigureServices
app.UseMvc();
}
после проверки кода библиотеки код функции AddOrleans выглядит следующим образом:
public static ISignalRBuilder AddOrleans(this ISignalRBuilder builder, IClusterClientProvider clientProvider = null)
{
if (clientProvider != null)
builder.Services.AddSingleton(clientProvider);
else
builder.Services.TryAddSingleton<IClusterClientProvider, DefaultClusterClientProvider>();
builder.Services.AddSingleton(typeof(HubLifetimeManager<>), typeof(OrleansHubLifetimeManager<>));
return builder;
}
Тем не менее, я понятия не имею, почему это не работает, поскольку внедрение зависимостей для меня немного ново.