我如何让 httpPlatformHandler 和 Kestrel 与一台服务器上的多个网站一起玩
How do I get httpPlatformHandler and Kestrel to play nicely with multiple websites on one server
出于开发目的,我的网络服务器为几个网站提供服务。这些都托管在 xxx.example.com/yyy.example.com 下。每个应用程序都有自己的子域,但在同一台服务器上运行,这显然降低了成本。
尝试用 ASP.NET 5 做到这一点被证明是相当困难的。 Kestrel 似乎接管了整个套接字连接,而不是(以某种方式)IIS 管理流量并将其路由到两个不同的应用程序池和网站。第二个产生的错误如下:
Microsoft.AspNet.Server.Kestrel.Networking.UvException: Error -4090 EADDRNOTAVAIL address not available
at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Check(Int32 statusCode)
at Microsoft.AspNet.Server.Kestrel.Networking.UvTcpHandle.Bind(ServerAddress address)
at Microsoft.AspNet.Server.Kestrel.Http.TcpListener.CreateListenSocket()
at Microsoft.AspNet.Server.Kestrel.Http.Listener.<>c__DisplayClass5_0.<StartAsync>b__0(Object _)
解决方案是关于project.json中web命令指定的server.urls,参见:https://github.com/aspnet/Hosting/issues/520#issuecomment-164127476
出于开发目的,我的网络服务器为几个网站提供服务。这些都托管在 xxx.example.com/yyy.example.com 下。每个应用程序都有自己的子域,但在同一台服务器上运行,这显然降低了成本。
尝试用 ASP.NET 5 做到这一点被证明是相当困难的。 Kestrel 似乎接管了整个套接字连接,而不是(以某种方式)IIS 管理流量并将其路由到两个不同的应用程序池和网站。第二个产生的错误如下:
Microsoft.AspNet.Server.Kestrel.Networking.UvException: Error -4090 EADDRNOTAVAIL address not available
at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Check(Int32 statusCode)
at Microsoft.AspNet.Server.Kestrel.Networking.UvTcpHandle.Bind(ServerAddress address)
at Microsoft.AspNet.Server.Kestrel.Http.TcpListener.CreateListenSocket()
at Microsoft.AspNet.Server.Kestrel.Http.Listener.<>c__DisplayClass5_0.<StartAsync>b__0(Object _)
解决方案是关于project.json中web命令指定的server.urls,参见:https://github.com/aspnet/Hosting/issues/520#issuecomment-164127476