.NET CORE和asp.net 發佈時不太同樣,ASP.NET Core再也不是由IIS工做進程(w3wp.exe)託管,而是使用自託管Web服務器(Kestrel)運行,IIS則是做爲反向代理的角色轉發請求到Kestrel不一樣端口的ASP.NET Core程序中,隨後就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯以後再將HTTP響應數據從新回寫到IIS中,最終轉達到不一樣的客戶端(瀏覽器,APP,客戶端等)。而配置文件和過程都會由些許調整,中間最重要的角色即是AspNetCoreModule,它是其中一個的IIS模塊,請求進入到IIS以後便當即由它轉發,並迅速重定向到ASP.NET Core項目中,這時候咱們無需設置應用程序池來託管咱們的代碼,它只負責轉發請求而已.因此發佈時最重要的仍是看咱們的AspNetCoreModule是否存在windows
進入這個模塊就能夠看到你是否安裝了託管捆綁包AspNetCoreModule,沒有的話能夠點擊這裏進行下載,瀏覽器
若是仍是沒有找到或者不知道怎樣下載.在個人百度網盤中下載安裝就好了,密碼:nrt2服務器
安裝好了以後就是這個樣子mvc
接下來和asp.net 發佈時同樣,新建一個網站就好了,爲了方便演示,名稱這裏用DotNetCoreDemo,路徑用一個方便尋找的路徑asp.net
接着就是重點了,應用程序池配置稍微不太同樣,.NET CLR版本選擇無託管代碼,託管管道模式選擇集成網站
好了,準備工做完成了,接下來就是文件的發佈了,發佈文件有兩種方式,能夠經過命令發佈,也能夠經過VS進行發佈spa
經過CMD找到你的文件所在的路徑,這裏就簡單經過命令建立一個.net core2.0 的MVC的程序DotNetCoreDemo.net
建立命令: dotnet new mvc3d
接着經過命令dotnet publish進行發佈( 在項目的目錄路徑),若是用這個命令他會默認發佈在bin文件的Debug中代理
這個不是咱們想要的,咱們必須發佈到指定路徑,剛纔咱們IIS發佈選擇的物理路徑路徑是在 E:\發佈\DotNetCoreDemo 這裏因此,咱們發佈的時候必須指定路勁
命令: dotnet publish -o 路徑
這裏就是 dotnet publish -o E:\發佈\DotNetCoreDemo
好了如今就發佈好了
經過VS進行發佈:
這個就和之前的ASP.NET 發佈差很少了,我如今用的是VS2017,發佈的時候直接選擇文件夾就能夠了,路徑就選擇IIS配置的物理路徑
終於完成了,來看一下最後的成果
PS:
AspNetCoreModule必定和NET CORE 版本相對應,我這裏用的..NET CORE2.0 ,因此捆綁程序包(.NET Core Windows Server Hosting)也用的2.0,若是版本不對應則會報錯502.5的錯誤