2016-11-21 50 views
0

http.sys是Windows中的一個內核模式驅動程序,它極大地加快了傳入HTTP請求的處理和路由。它是在Windows NT 4的日子裏添加的,與Apache相比,它爲當時的nascant IIS提供了基準提升。當自承載ASP.NET核心 - 它使用http.sys如果可用?

對於那些不熟悉的:它是一個劫持傳入HTTP請求的組件(在端口80和443上,您可以配置它以監視其他端口),並根據其配置將它們路由到不同的用戶級應用程序,請參閱MSDN以獲取更多詳細信息:https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx

今天,如果您使用IIS來託管您的應用程序,您將利用http.sys

但是,我找不到任何有關自承載的ASP.NET Core應用程序是否將使用http.sys(如果存在)的信息。

+0

我發現[Rick Strahl]的這個頁面(https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS)。 **他說:** 首先,如果您希望多臺應用程序在共享端口80和端口443的單臺服務器上運行,則無法直接運行Kestrel。 Kestrel不支持在一個IP地址上允許多個端口80綁定所需的主機頭路由。如果沒有IIS(或者實際上是http.sys),你目前無法單獨使用Kestrel來做到這一點(我認爲這也不是計劃中的)。 它看起來像,它不... – Legends

+0

因此,如果它會在引擎蓋下使用http.sys,它也將支持主機頭路由,這就是我所理解的,也許我錯了... – Legends

回答

2

雖然紅隼不使用或支持HTTP.SYS(也必須運行在Linux上不具有HTTP.SYS),你可以使用WebListener(也here,它使用HTTP.SYS和使用示例here)爲了達成這個。但是,只有在Windows上出於顯而易見的原因。

與Kestrel不同,WebListener被認爲是生產準備好的,這意味着您可以使用它來託管面向互聯網的應用程序。另一方面的紅隼還沒有出現,所以當時的正式建議是總是在反向代理(IIS,nginx等)後面使用Kestrel。