แอปพลิเคชัน ASP.NET Core ทั้งหมดต้องการวัตถุ WebHost ที่ทำหน้าที่เป็นแอปพลิเคชันและเว็บเซิร์ฟเวอร์เป็นหลัก WebHostBuilder ใช้ในการกำหนดค่าและสร้าง WebHost โดยปกติคุณจะเห็น UseKestrel() และ UseIISIntegration() ในรหัสการตั้งค่า WebHostBuilder
สิ่งเหล่านี้ทำอะไรได้บ้าง
UseKestrel() − สิ่งนี้จะลงทะเบียนอินเทอร์เฟซ IServer สำหรับ Kestrel เป็นเซิร์ฟเวอร์ที่จะใช้โฮสต์แอปพลิเคชันของคุณ
ในอนาคตอาจมีตัวเลือกอื่น ๆ รวมถึง WebListener ซึ่งจะเป็น Windows เท่านั้น
UseIISIntegration() − สิ่งนี้บอก ASP.NET ว่า IIS จะทำงานเป็น reverse proxy ต่อหน้า Kestrel
จากนั้นจะระบุการตั้งค่าบางอย่างที่พอร์ต Kestrel ควรรับฟัง ส่วนหัวการส่งต่อ และรายละเอียดอื่นๆ
ตัวอย่าง
public class Program{ public static void Main(string[] args){ var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); host.Run(); } }
จนถึง ASP.NET Core 2.2 ASP.NET Core ถูกโฮสต์นอกกระบวนการใน IIS เรามีสองกระบวนการสำหรับแอปพลิเคชัน -
w3wp.exe กระบวนการ IIS
dotnet.exe กระบวนการ ASP.NET Core ที่ซึ่งเว็บเซิร์ฟเวอร์ Kestrel เริ่มทำงาน ซึ่งหมายความว่า IIS และ Kestrel กำลังสื่อสารระหว่างสองกระบวนการนี้
สำหรับสถานการณ์นี้ เราใช้ UseIISIntegration