Хорошо, так что после долгого вечера я получил решение этой проблемы.
Сначала просто проясню мои настройки. Существует целевой проект API. Net 4.7.2, который транслирует некоторые сообщения через SignalR 2.4.1 Hub. Существуют и другие Asp. Net 4.7.2. Проекты, использующие те хабы, которые работают нормально. Кроме того, имеется новый встроенный веб-сайт. Net Ядро, но предназначенное для платформы 4.7.2.
Решение, которое я выбрал, заключается в размещении конвейера OWIN в конвейере AspCore.
Первый Мне нужно было установить следующие пакеты:
- Microsoft.Owin
- Microsoft.AspNetCore.Owin
Я также добавил новый метод расширения для Core Интерфейс IApplicationBuilder, который устанавливает OWIN для того же конвейера:
public static class OwinExtensions
{
public static IApplicationBuilder UseOwinApp(this IApplicationBuilder app, Action<IAppBuilder> configuration)
{
return app.UseOwin(setup => setup(next =>
{
IAppBuilder owinApp = new AppBuilder();
var aspNetCoreLifetime = (IApplicationLifetime)app.ApplicationServices.GetService(typeof(IApplicationLifetime));
var owinAppProperties = new AppProperties(owinApp.Properties)
{
OnAppDisposing = aspNetCoreLifetime?.ApplicationStopping ?? CancellationToken.None,
DefaultApp = next
};
configuration(owinApp);
return owinApp.Build<Func<IDictionary<string, object>, Task>>();
}));
}
}
Затем в классе Startup проекта Core, в методе Configure , который мне удалось используйте мое расширение и зарегистрируйте в нем концентраторы SignalR следующим образом:
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseOwinApp(owinApp =>
{
owinApp.MapSignalR();
});
...
}
Таким образом, мы можем добавить больше промежуточного программного обеспечения в конвейер OWIN, если нам нужно по тем или иным причинам.
Надеюсь, это поможет.