DotNetCore 部署到IIS 上


將 DotNetCore MVC 項目成功部署到 IIS 上,記錄下配置要點:

 

 1.在 ASP.NET Core 應用中使用 Kestrel 

Microsoft.AspNetCore.App 元包中包括 Microsoft.AspNetCore.Server.Kestrel 包(ASP.NET Core 2.1 或更高版本)。The Microsoft.AspNetCore.Server.Kestrel package is included in the Microsoft.AspNetCore.App metapackage (ASP.NET Core 2.1 or later).

默認情況下,ASP.NET Core 項目模板使用 Kestrel。ASP.NET Core project templates use Kestrel by default. 在 Program.cs 中,模板代碼調用 CreateDefaultBuilder,后者在后台調用 UseKestrel

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>();

若要在調用 CreateDefaultBuilder 后提供其他配置,請調用 UseKestrel

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseKestrel(options =>
        {
            // Set properties and call methods on options
        });

 

想知道詳細的 options 配置的請點這里

 

在 ConfigureServices(IServiceCollection services)中加入 IIS 服務代碼:

        public void ConfigureServices(IServiceCollection services)
        {
            // ...
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.Configure<IISOptions>(options =>
            {
                options.ForwardClientCertificate = false;
            });
        }    

 

2、發布網站,我用的文件方式:

 

 

發布時注意勾選上“在發布前刪除所有現有文件”。

 

3、IIS安裝服務器上安裝DotNetCore.X.X.X-WindowsHosting安裝成功后重啟IIS服務器。

根據版本選擇下載 下載地址:https://www.microsoft.com/net/download/windows

 

4、部署之前要確保你的IIS上已經安裝了AspNetCoreModule托管模塊

 

5.設置應用程序池的.NET CLR版本為“無托管代碼”

因為,IIS是作為一個反向代理的角色,並不需要它來托管代碼

 

6、經測試,DotNetCore 項目,可以部署為網站下的一個“應用程序”

 

7、總結

.Net Core 和 傳統的.Net 程序IIS部署主要注意以下幾點:  

  • 網站程序的 IIS 適配修改。
  • 安裝DotNetCore.X.X.X-WindowsHosting和.Net Core SDK
  • 應用池配置為無托管代碼(網上解釋:ASP.NET Core不再是由IIS工作進程(w3wp.exe)托管,而是使用自托管Web服務器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同端口的ASP.NET Core程序中,隨后就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之后再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS之后便立即由它轉發,並迅速重定向到ASP.NET Core項目中,所以這時候我們無需設置應用程序池來托管我們的代碼,它只負責轉發請求而已)
  • 如果需要讀寫根目錄權限,要更改應用池 ApplicationPoolIdentity
  • 網站報錯,通過修改web.config 啟用錯誤日志查看詳細錯誤信息

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM