在IIS上部署你的ASP.NET Core項目

概述html

與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託管模塊,若是沒有的話,點擊這裏進行下載並安裝服務器

1、安裝IISapp

一、在控制面板→程序→啓用或關閉Windows功能→勾選Internet Information Services以及Web管理工具下的IIS管理控制檯框架

 

2、發佈項目工具

一、發佈咱們上一篇建好的ASP.NET Core API項目,而後選擇IIS,新建一項發佈配置網站

二、發佈方法選擇文件系統,而後設置一個發佈路徑ui

三、配置文件能夠根據你線上、線下的環境進行選擇,由於是基於.NET Core,因此目標框架爲netcoreapp1.1,而後保存發佈便可spa

四、固然了,你還能夠基於CLI的Publish命令進行發佈,只需切換到Light.API根目錄下,輸入如下命令便可3d

dotnet publish --framework netcoreapp1.1 --output "E:\Publish" --configuration Release

framework表示目標框架,output表示要發佈到的目錄文件夾,configuration表示配置文件,等同於和上面咱們經過管理器來發布的操做,如圖:

3、在IIS中添加網站

一、添加一個網站,設置一下名稱,並將路徑指向你剛纔發佈的文件夾,而後啓動網站便可

 二、設置應用程序池的.NET CLR版本爲「無託管代碼」,由於剛纔也說了,IIS是做爲一個反向代理的角色,並不須要它來託管代碼

三、OK,大功告成,瀏覽一下咱們的網站。

此時個人心裏是崩潰的,沒有任何有用的提示信息,看來只能本身動手查看應用程序的運行日誌了

四、設置IIS的日誌記錄方式爲日誌文件和ETW事件

五、從新訪問網站,而後打開Windows應用程序日誌,你會看到這樣一條信息。意思是說你的應用程序已經由PID爲3236的進程啓動,而且在25636的端口上監聽着。

我打開任務管理器查看了一下,說的很對。應該是一切正常纔對啊,那爲啥訪問網站是404呢。

六、最後一點,其實你還能夠經過CLI來運行你發佈的程序,切換到你發佈文件夾下,輸入如下命令:

dotnet Light.API.dll

看到這個提示,那麼說明你成功了。試着訪問一下:http://localhost:5000/swagger/ui

而此時你再回過頭來看任務管理器,那麼就會又多了一個dotnet的進程

至此,整個IIS的搭建已經完成,不知道你是否有所收穫。接下來不知道把它發佈到Linux上,會有什麼樣的坑。無論怎樣,你的每一步,回過頭來看,都是值得的!

本文轉自:http://www.cnblogs.com/wangjieguang/p/core-iis.html

相關文章
相關標籤/搜索