Windows + IIS 環境部署Asp.Net Core App

来源:http://www.cnblogs.com/lookerblue/archive/2017/07/01/7101641.html
-Advertisement-
Play Games

Asp.Net Core App為了做到跨平臺,自帶了一個輕量級的Web Server - Kestrel,那麼要在IIS中部署Asp.Net Core App,就必須有一種新的機制來協調IIS與Kestrel Server之間的數據傳遞。 ...


環境:Windows Server 2012, IIS 8, Asp.Net Core 1.1.

不少人第一次在IIS中部署Asp.Net Core App的人都會遇到問題,會發現原來的部署方式無法運行Asp.Net Core App程式。過去無論是原始的Asp程式還是後來的Asp.Net程式,在IIS中的部署方式都沒太大變化,僅需指向程式目錄,然後設定虛擬目錄,最後做一些參數配置。Asp.Net Core App為了做到跨平臺,自帶了一個輕量級的Web Server - Kestrel,那麼要在IIS中部署Asp.Net Core App,就必須有一種新的機制來協調IIS與Kestrel Server之間的數據傳遞。

1.  Asp.Net Core的部署模式

與傳統的Asp.Net程式不同,Asp.Net Core App使用了Kestrel Server。Kestrel是一個跨平臺的Web Server,與IIS一樣負責請求的監聽、接收和響應,但沒有IIS豐富的管理功能,仍需要由IIS來處理一些前置工作。(當然你也可以使用Apache來做前置處理)

IIS負責把外部請求轉發給後端的Asp.net Core App,充當“反向代理(reverse-proxy)”角色。

2.  理解反向代理

“反向”是指入站方向,“代理”可以理解為某種服務,這裡是轉發HTTP請求的服務。“反向代理”就是入站方向轉發HTTP請求的服務。

和路由器原理一樣,路由器除了讓區域網能夠訪問internet,也可以通過設置NAT或埠映射,從internet訪問內部的某台伺服器,相當於把入站請求轉發給指定電腦上,這與IIS的反向代理角色類似。代理伺服器與路由器都是起到數據轉發的作用,只不過代理伺服器轉發的是某類應用的數據,路由器轉發的是數據包。

3.  部署環境

Asp.Net Core App部署需要操作系統滿足:

  • Windows 7 或更新版本
  • Windows Server 2008 R2 或更新版本

4.  配置IIS

Windows Server上通過“添加角色和功能”,桌面Windows上通過“啟用和關閉Windows功能”來安裝和配置IIS。確保勾選Web服務和“IIS 管理控制台”:

Windows Server IIS 安裝配置 

 桌面Windows IIS 安裝配置

5.  安裝.NET Core Windows Server Hosting程式集

安裝.NET Core Windows Server Hosting程式集,讓IIS具備反向代理功能。該程式集包含了.Net Core運行時(Runtime),.Net Core 類庫(Library)和 Asp.Net Core Module。其中Asp.Net Core Module負責反向代理工作。註意,如果是離線安裝,則需先手動安裝Microsoft Visual C++ 2015 Redistributable。

特別註意,目前.NET Core版本升級很快,請下載最新版本的.NET Core Windows Server Hosting,確保伺服器上的.Net Core版本不低於部署的Asp.Net Core App版本。

下載最新版本.NET Core Windows Server Hosting

安裝完成重啟系統或重啟IIS服務即可。

6.  IIS中配置Asp.Net Core App

接下來的步驟與部署傳統網站基本一致,但也有稍許不同,請留意。

1)  伺服器中創建目錄存放發佈以後的App程式文件,確保App的web.config文件在網站根目錄下。

2)  在網站根目錄創建一個logs文件夾。如果你開啟了某些日誌服務,日誌文件將記錄在這裡。當然也可以不記錄日誌,但初次部署對排錯有幫助,建議創建。

3)  在IIS管理器中添加網站。步驟與一般網站配置一致:

4) 配置應用程式池。在左側導航欄選擇“應用程式池”,選擇指定程式池,右鍵菜單,選擇“基本設置”,將.Net CLR版本設置為“無托管代碼”。

7.  測試Asp.Net Core App

本例使用一個測試公網功能變數名稱www.test.com,顯然我們沒有許可權更改此功能變數名稱在公網的解析記錄,但我們可以更改此功能變數名稱在本地的指向用於測試。使用記事本打開C:\Windows\System32\Drivers\etc\hosts文件,添加一條記錄 “127.0.0.1      www.test.com”。之後我們在本地訪問功能變數名稱www.test.com時IP地址將解析為 127.0.0.1。使用瀏覽器打開www.test.com,我們會看到Asp.Net Core App已正常運行:

 

相關閱讀:Asp.Net Core App 部署故障示例


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我們在調試WEB程式的時候可以把本地web程式掛載到本地IIS,然後訪問程式,通過附加進程的方式(w3wp)來調試程式(個人非常喜歡的一種調試方式),還有一種比較傳統的方式就是通過VS自帶的F5來執行,但是感覺很蹩腳,如果修改c#代碼我們不得不停止當前程式然後重新編譯重新F5來啟動,感覺時間很浪費, ...
  • 多線程使用過程中,除了線程同步的問題要考慮外,異常處理也是經常要面對的事情。 預設主線程捕獲不到非同步線程的異常 如下代碼: 1 namespace ConsoleApplication29 2 { 3 class Program 4 { 5 static void Main(string[] arg ...
  • 使用多線程很容易,但是如果多個線程同時訪問一個共用資源時而不加以控制,就會導致數據損壞。所以多線程併發時,必須要考慮線程同步(或稱線程安全)的問題。 什麼是線程同步 多個線程同時訪問共用資源時,使多個線程順序(串列)訪問共用資源的機制。 註意: 1,共用資源,比如全局變數和靜態變數。 2,訪問,一般 ...
  • ARP斷網攻擊是什麼?可以吃嗎?如果可以吃它好吃嗎? ARP斷網攻擊就是通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網路中產生大量的ARP通信量使網路阻塞,攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,造成網路中斷或中間人攻擊。 那就是不可以吃咯? ...
  • asp.net core支持外部文件和命令行參數方式來配置系統運行所需要的配置信息,我們從下麵兩個常用場景來具體說下具體使用方法。 一、監聽地址及埠配置 1,命令行方式 asp.net core系統通過命令行方式啟動,使用的命令如下: dotnet run 上面的命令直接在源代碼目錄下執行,便可以 ...
  • this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "<script>Ceshi();</script>", true); 這句代碼與下麵這段代碼放一起,不管是插在哪裡,這句代碼都無效,無法調用js 註釋掉 Pa ...
  • 相關閱讀:Windows + IIS 環境部署Asp.Net Core App 1. HTTP Error 502.5 – Process Failure 環境 Windows Server 2012, IIS 8, Asp.Net Core 1.1. 故障 App按正常流程發佈後通過瀏覽器訪問出現 ...
  • inner join : linq 預設使用Inner Join的鏈接方式,如下麵的表達式一樣: Left Join: 左鏈接返回左表的全部數據,以及右表中滿足鏈接條件和不滿足鏈接條件的數據,不滿足的取欄位值, 在一對多的的情況下主表的數據會被重覆, 左外鏈接的實現方式如下,註意這裡面和上面的寫法不 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...