只有累積,沒有奇蹟

2019年3月16日 星期六

[.NETCore] 在 IIS 執行 ASP.NET Core 應用程式

前言
在 IIS 執行 ASP.NET Core 專案時與過去 .NET Framework 運作不同,.NET Core Application 預設以 Kestrel 為 HTTP Server 與 IIS 做溝通,流程可以參考下圖所示;因此要將開發好的 .NET Core 網站專案佈署至 IIS 設定方式是不同的,這篇介紹如何將 ASP.NET Core 應用程式佈署至 IIS 的步驟說明,若有問題歡迎提出一起討論或是給予指導

安裝 .NET Core Server Hosting
首先先到 .NET 下載中心 : 傳送門,網頁有列出 .NET Core 所有版本的 SDK 與 Runtime 安裝檔,因此可選擇需要的 .NET Core Server Hosting,公司開發的專案使用的是 .NET Core 2.2 因此點擊 ASP.NET Core 2.2 版  Runtime & Hosting Bundle  進行下載,

下載後進行安裝 .NET Core 2.2 Windows Server hosting 的動作
安裝完畢之後,為了讓 IIS 可以讀取到新的環境變資訊,請開啟命令提示字元執行下列指令
  1. net stop was /y
  2. net start w3svc
可以發現在 IIS 站台 > 模組中出現  AspNetCoreModule  項目

題外話 : 不安裝 AspNetCoreModule 會發生什麼事情?
.NET Core 中會以 Kestrel 為 HTTP Server 並與 AspNetCoreModule 與 IIS 做整合,如果不安裝此 module 會跳出下列錯誤訊息  執行此作業時發生錯誤  ,如下圖所示
在錯誤訊息中可以得知,在 IIS 不支援該模塊設定因此無法進行預覽 config 的動作,我們在開啟佈署專案資料匣底下 Web.config 設定檔案,可以發現 config 中 modules 區段指定 AspNetCoreModule
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <configuration>
  3. <location path="." inheritInChildApplications="false">
  4. <system.webServer>
  5. <handlers>
  6. <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  7. </handlers>
  8. <aspNetCore processPath="dotnet" arguments=".\Apollo.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  9. </system.webServer>
  10. </location>
  11. </configuration>

發布 Application
這一步主要是將 .NET Core 專案發布至指定資料夾,在 Visual Studio 發布方式為 
Step 1 : 專案按下右鍵 > Publish 
Step 2 : 選擇 IIS 選項,按下一步
Step 3 : Publish method 選擇 file system 及輸入你要發佈到的位置
Step 4 : 此步驟可以選擇 Publish 是要 release mode 或是 debug mode,指定的 target framework,這裡是測試因此我都已預設為主直接按下一步
Step 5 : 接著會直接開始發布動作 (publish 右邊會一直轉轉轉),停止後即發布完成

IIS 新增站台
安裝完 .NET Core Server Hosting 與介紹將程式發佈到指定資料夾,接著下一步就是設定 IIS 應用程式,如果沒有安裝過 IIS 可以參考之前寫的 [IIS] 如何在 Windows 10 Pro 安裝 IIS,以下就來簡單介紹設定步驟

Step 1 : 開啟 IIS,在站台按右鍵新增站台,設定其站台名稱與指定執行路徑為佈署資料夾位置
Step 2 : 開啟編輯應用程式集區,.NET CLR 版本更改為 : 沒有受控瑪
Step 3 : 設定完畢後打開瀏覽器,在網址輸入 http://localhost:3231/index.html
即可看到 Hello world ! 設定成功,Happy Coding !!! 

參考
在使用 IIS 的 Windows 上裝載 ASP.NET Core
Publishing and Running ASP.NET Core Applications with IIS

Related Posts:

  • [.NETCore] 在 IIS 執行 ASP.NET Core 應用程式前言 在 IIS 執行 ASP.NET Core 專案時與過去 .NET Framework 運作不同,.NET Core Application 預設以 Kestrel 為 HTTP Server 與 IIS 做溝通,流程可以參考下圖所示;因此要將開發好的 .NET Core 網站專案佈署至 IIS 設定方式是不同的,這篇介紹如何將 ASP.NET Core 應用程式佈署至 IIS 的步驟說明,若有問題歡迎提出一起討論或是給予指導 … Read More
  • [IIS] 程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020)問題 今天要在公司測試 Server 建立測試站台,在完成設定 Application Pool 與站台指定位置後按下啟動,跳出'程序無法存取檔案,因為檔案正由另一個程序使用。(發生例外狀況於HRESULT:0x80070020) 錯誤訊息,訊息內容看似有檔案被 lock 住造成啟動異常,但追根究底之後會發現其異常原因蠻單純的,以下就針對解決此問題的方式做說明,若有問題歡迎提出一起討論或是給予指導。 解決方案 根… Read More
  • [Tool] Log Parser Studio - 搜尋 Log 好幫手前言 這幾天專案遇到些小亂流,必須找到特定條件的應用程式 Log 做資料的確認及重送機制,雖然系統有使用 ELK但由於專案太舊導致 Log 沒紀錄在 ELK 上面,為了快速找到多台應用程式中的 Log 資訊,在搜尋過程中爬 Log 使用 Log Parser 工具來快速搜尋 Log 資訊,避免過度花費人工的方式逐一進行搜尋 Log,這篇文章就針對 Log Paresr Studio 工具做簡單的介紹與說明,若有問題歡迎提出一起討論或是給予指導。 … Read More
  • [NETCore] ASP.NET Core 啟動異常 - HTTP Error 500.30 - ANCM In-Process Start Failure 問題  在開發專案時跳出異常訊息,錯誤訊息為  HTTP Error 500.30 - ANCM In-Process Start Failure ,這篇就針對此案例作簡單紀錄與分享,若是有不清楚或是錯誤的地方歡迎討論予糾正。 解決方法  廢話不多說,先看案發現場的錯誤畫面 執行異常的程式代碼,看起來很單純的代碼 public static void Main(s… Read More
  • [NETCore] ASP.NET Core 啟動失敗 - 嘗試存取通訊端被拒絕,因為存取權限不足問題  接獲同事詢問專案無法正常啟用,專案是使用 ASP.NET Core 2.2 開發並搭配 Kestrel 使用,在過去開發時都正常運作但今天忽然就遭遇啟動異常的狀況,在啟用時會跳出錯誤訊息為 'Unable to bind to http://localhost:5000 on the IPv4 loopback interface: '嘗試存取通訊端被拒絕,因為存取權限不足。''  ,這篇… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com