本篇介紹如何發布項目並在IIS上部署以供外部調用。
要通過IIS運行.NET5 core webapi需在IIS所在服務器上配置運行環境,
包括 .NET Core 運行時、.NET Core 庫 和 ASP.NET Core 模塊,他們都被打包在 .NET Core 托管捆綁包中。
.net core運行時和.net core庫我們已經很熟悉了,簡單介紹一下ASP.NET Core 模塊。
一、ASP.NET Core Module (ASP.NET Core 模塊)
ASP.NET Core 模塊是插入 IIS 管道的本機 IIS 模塊,能讓 ASP.NET Core 應用程序通過 IIS 運行。
可以使用以下任一方式通過 IIS 運行 ASP.NET Core 應用:
1. 在 IIS 工作進程 (w3wp.exe) 內托管 ASP.NET Core 應用,稱為進程內托管模型,如下圖:
上圖說明了 IIS、ASP.NET Core 模塊和進程內托管的應用之間的關系。
2. 將 Web 請求轉發到運行 Kestrel 服務器的后端 ASP.NET Core 應用,稱為進程外托管模型,如下圖:
上圖說明了 IIS、ASP.NET Core 模塊和進程外托管的應用之間的關系。
自 ASP.NET Core 3.0 起,默認情況下使用的是進程內托管模型,因為這樣可以得到更好的性能和診斷。
二、安裝.NET Core 托管捆綁包
.NET Core 托管捆綁包是 .NET Core 運行時和 ASP.NET Core 模塊的安裝程序, 官方下載地址:
https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-5.0.3-windows-hosting-bundle-installer
本項目的.net版本是.net5 ,下載時選擇對應的版本進行安裝,畫面如下:
若要確定已安裝 ASP.NET Core 模塊的版本,先找到aspnetcorev2.dll文件
(文件路徑是 C:\PROGRAMFILES\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll),
然后右鍵--屬性--詳細信息,“文件版本”和“產品版本”表示模塊的已安裝版本,如下圖:
安裝完之后在 "IIS --> 網站 ---> WebDemo ---> 模塊" 中可以看到一個名為"AspNetCoreModuleV2"的IIS模塊,如下圖:
雙擊進去如下:
三、發布webapi
1. 在VS2019的解決方案資源管理器中選中項目點右鍵---發布,如下:
2. 發布的目標有多種,這里我們選擇將項目發布到文件夾中,如下圖:
3. 下一步之后,可以看到發布的界面,如下圖(目標位置后的紅框是發布的路徑):
4. 點"發布"按鈕后生成的文件如下:
5. 打開IIS新建一個WebDemo的網站,然后在該網站上" 右鍵--添加應用程序 ",如下圖:
6 . 輸入應用程序名稱 "WebApiDemo" 及路徑(這里指向項目發布時的路徑)后點 "確定"按鈕,如下圖:
7. 可以看到WEB API在IIS上部署完成了,如下圖:
8.打開POSTMAN測試一下 , 輸入網址:http://localhost/WebApiDemo/api/users,結果如下:
提示我們 401 沒有授權的信息。
注意:因為此Webapi是在IIS上的WebDemo網站下以應用程序的方式部署的,
所以網址的localhost后要加上應用程序的名稱 "WebApiDemo" 才能訪問。
9. 訪問網址 http://localhost/WebApiDemo/api/users/login 並配置好acc=111&pwd=222參數,結果如下:
顯示生成的token信息,說明在IIS上部署的webapi已經可以提供接口訪問服務了。
(完)