同一端口上的自主信号R和本地Http服务器

时间:2014-06-21 21:33:35

标签: c# localhost signalr self-hosting

我想在端口80上本地托管自我主机SignalR进程,并在同一端口上托管的本地http目录(提供来自某个目录的文件,将目录结构映射到HTTP请求。)

例如,访问localhost:80/index.html将返回位于某个目录中的html文件, 它还与同一端口上的SignalR进程通信,因为由于same origin policy而拥有不同的端口会导致Chrome浏览器出错。

任何想法我怎样才能实现它?因为我不能用两个不同的应用程序绑定相同的端口。

1 个答案:

答案 0 :(得分:3)

只要我们谈论SignalR 2.x并且您可以通过WebAPI提供其他内容,这是可能的,因为它们都使用OWIN。对于MVC,事情是more complicated

要在同一端口上运行SignalR和WebAPI,您必须在SignalR应用程序中安装Microsoft.AspNet.WebApi.OwinSelfHost并修改Owin.IAppBuilder以使用Web API:

public static class Startup
{
    public static void Configuration(IAppBuilder app)
    {
        var httpConfig = new HttpConfiguration();
        httpConfig.Routes.MapHttpRoute("Default", "api/{controller}/{id}",
                                       new {id = RouteParameter.Optional});
        app.UseWebApi(httpConfig);

        app.MapSignalR();
    }
}

请注意,您也可以use CORS来解决该浏览器问题。