一、IIS 配置
啟用 Web 服務器 (IIS) 角色並建立角色服務。
1、Windows Ddesktop 桌面操作系統(win7及更高版本)
導航到“控制面板” > “程序” > “程序和功能”> “啟用或關閉 Windows 功能”。 打開“Internet Information Services”組和“Web 管理工具”。 選中“IIS 管理控制台”框, 選中“萬維網服務”框。 接受“萬維網服務”的默認功能,或自定義 IIS 功能。如下圖1
圖1
2、Windows Server 操作系統(本系統是 2012 R2 Standard)
對於服務器操作系統,通過“管理”菜單或“服務器管理器”中的鏈接使用“添加角色和功能”向導。 在“服務器角色”步驟中,選中“Web 服務器(IIS)”框。
如下圖2
圖2
繼續執行“確認”步驟,安裝 Web 服務器角色和服務。 安裝 Web 服務器 (IIS) 角色后無需重啟服務器/IIS。
二、安裝 .NET Core Windows Server 托管捆綁包
在托管系統上安裝 .NET Core Windows Server 托管捆綁包。 捆綁包可安裝 .NET Core 運行時、.NET Core 庫和 ASP.NET Core 模塊。 該模塊創建 IIS 與 Kestrel 服務器之間的反向代理。 如果系統沒有 Internet 連接,請先獲取並安裝 Microsoft Visual C++ 2015 Redistributable,再安裝 .NET Core Windows Server 托管捆綁包。
安裝完成以后需要重啟系統,或在命令提示符處依次執行 net stop was /y 和 net start w3svc,重啟服務,了解系統路徑的更改。
三、在 Visual Studio內使用Web 發布系統
本系統發布使用的是vs2017 企業版本,發布系統MmPS,發布成文件系統
1、在vs2017 中選中項目MmPS,右鍵,點擊 發布 選項
2、在 發布 按鈕下面 選擇 創建新配置文件
3、點擊 發布,即可完成發布系統MmPS,發布的項目在MmPS項目的bin\Release\PublishOutput 下的MmPSPublish。
四、web.config的配置
1、web.config 文件
web.config 文件的主要用途是配置 ASP.NET Core 模塊。 它可以提供其他 IIS 配置設置。 web.config 的創建、轉換和發布 由 .NET Core Web SDK (Microsoft.NET.Sdk.Web) 處理。 SDK 設置在項目文件 <Project Sdk="Microsoft.NET.Sdk.Web"> 的頂部。 要防止 SDK 轉換 web.config 文件,請將 <IsTransformWebConfigDisabled> 屬性添加到項目文件,並將其設置為 true:
XML
<PropertyGroup> <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
如果項目中有 web.config 文件,則會使用正確 processPath 和參數轉換該文件,以便配置 ASP.NET Core 模塊,並將該文件移動到已發布的輸出。 轉換不會修改文件中的 IIS 配置設置。
2、web.config 位置
.NET Core 應用通過 IIS 與 Kestrel 服務器之間的反向代理托管。 為了創建反向代理,web.config 文件必須存在於已部署應用的內容根路徑(通常為應用基路徑)中,該路徑是向 IIS 提供的網站物理路徑。 若要使用 Web部署發布多個應用,應用的根路徑中需要包含web.config 文件。敏感文件存在於應用的物理路徑中,包括子文件夾,如 <assembly_name>.runtimeconfig.json、<assembly_name>.xml(XML 文檔注釋)和 <assembly_name>.deps.json。 存在 web.config 文件並使用該文件配置站點時,IIS 會阻止提供這些敏感文件。 因此,切勿意外重命名 web.config 文件或將其從部署中刪除,這一點非常重要。
3、web.config 內容的配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MmPS.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="false" />
</system.webServer>
</configuration>
注:stdoutLogEnabled 是記錄日志的,一本設置為true,方便查錯。
五、IIS上部署創建 IIS 網站
1、在目標 IIS 系統上,創建一個文件夾,將應用的已發布文件夾和文件包含在其中,如MmPS項目的bin\Release\PublishOutput 下的MmPSPublish。
2、在文件夾中創建一個“日志”文件,用於在啟用 stdout 日志記錄時保存 stdout 日志。 如果部署應用時有效負載中包含了“日志”文件夾,請跳過此步驟。
3、在 IIS 管理器中創建新網站。 提供網站名稱,並將物理路徑設置為應用的部署文件夾。 提供“綁定”配置並創建網站。
4、將“應用程序池”設置為“無托管代碼”。 ASP.NET Core 在單獨的進程中運行,並管理運行時。
5、選中網站,右鍵 管理網站,瀏覽,既可運行網站了。
六、由於IIS會隨着開機啟動而自動啟動網站服務,因此無需配置supe開機啟動守護進程了。
7、測試
在瀏覽器中輸入IP地址,看看網站是否可以正常運行。
參考鏈接:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?tabs=aspnetcore2x