與ASP.NET時代不同,ASP.NET Core不再是由IIS工作進程(w3wp.exe)托管,而是使用自托管Web服務器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之后再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之后便立即由它轉發,並迅速重定向到ASP.NET Core項目中,所以這時候我們無需設置應用程序池來托管我們的代碼,它只負責轉發請求而已。
本文默認已安裝 IIS 相關服務。
一、安裝 AspNetCoreModule 模塊
在部署到 IIS 之前,應確保已安裝 AspNetCoreModule 模塊,如下圖:

下載地址:AspNetCoreModule
二、發布項目
直接使用 VS2017 右鍵發布至指定目錄,如下:
1、點擊“Create Profile”,進行發布配置

2、點擊目標位置后的“設置...”

3、發布方法“文件系統”,指定目標位置,點擊“下一頁”

4、目標平台選擇“netcoreapp版本號”,文件發布選項,數據庫為可選發布配置,最后點擊“保存”

5、配置完成,發布。
三、在 IIS 中添加站點
1、像之前得 ASP.NET 站點一樣添加站點;
2、在應用程序程序池中找到關聯得應用程序池,設置應用程序池的.NET CLR版本為“無托管代碼”,因為,IIS是作為一個反向代理的角色,並不需要它來托管代碼。

