我想在端口80上本地托管自我主机SignalR进程,并在同一端口上托管的本地http目录(提供来自某个目录的文件,将目录结构映射到HTTP请求。)
例如,访问localhost:80/index.html
将返回位于某个目录中的html文件,
它还与同一端口上的SignalR进程通信,因为由于same origin policy而拥有不同的端口会导致Chrome浏览器出错。
任何想法我怎样才能实现它?因为我不能用两个不同的应用程序绑定相同的端口。
答案 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来解决该浏览器问题。