But then I wanted also to inform the clients about some internal changes in my program in an asynchronous way. For this I thought ASP.NET SignalR would be the perfect solution. But unfortunately, SignalR expects an OWIN host, not the HttpSelfHostServer.
Then I spent some time with googling. And finally I was able to find the solution. I had to add the following NuGet packages to my project:
1 2 3 | Microsoft.AspNet.WebApi.Owin Microsoft.Owin.Host.HttpListener Microsoft.Owin.Hosting |
All packages are in pre-release state (version 0.21.0-pre at the moment). But they work already. To fire up the OWIN host, I needed only the following few lines of code:
1 2 3 4 5 | using (WebApplication.Start<Startup>(serverUrl)) { Thread.Sleep(Timeout.Infinite); } |
The configuration itself is done in the Startup class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Startup { public void Configuration(IAppBuilder app) { // Configure WebApi var config = new HttpConfiguration(); config.Routes.MapHttpRoute( "API Default" , "api/{controller}/{id}" , new { id = RouteParameter.Optional }); app.UseWebApi(config); // Configure SignalR app.MapHubs(); } } |
Quite easy if you know it...