Работя върху приложение, използващо SignalR 2, и срещам проблеми при картографирането на SignalR чрез метода на разширение .MapOwinRoute() за ASP.net 4 RouteTable.Routes. Като:
RouteTable.Routes.MapOwinRoute("signalr.hubs", "signalr/hubs", a => a.MapSignalR());
също добавен към Web.Config:
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings
Картира се. Навигирането до /signalr/hubs ми дава прокситата на хъбовете, но когато се свържа с моя код:
$(function () {
var orderProcessing = $.connection.orderProcessing;
$.connection.hub.start().done(function () {
orderProcessing.server.doStuff();
});
});
Маршрутът /signalr/negotiate връща 404.
Всичко работи добре, когато го направя така:
[assembly: OwinStartup(typeof(Web.Startup))]
namespace Web
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
Проблемът е, че използването на OwinStartup не е опция за мен, тъй като трябва да конфигурирам SignalR с моя собствен резолвер на зависимости, свързвайки го с общия IOC контейнер, който използвам, и той не е готов в момента на OwinStartup. Също така трябва да конфигурирам JSON сериализатора с персонализирани опции, които също се конфигурират на по-късен етап.
Не мога да разбера какво пропускам тук.