.NET Core發布部署的文章園內有很多了,大家可以自行百度,該篇主要想總結需要注意的地方,列舉前后端(比如前段 Vue,后端 WebAPI)在同一台服務器上的主要兩種方式。
兩種方式:
1. 前后端不同站點,。(也就是兩個端口)
2. 前后端一個站點。(只需要一個端口)
在部署環境上下載安裝SDK,注意下載的版本一定要和你編譯使用的版本一致,不然部署到IIS會報錯。
具體.Net Core版本、SDK版本、Runtime版本的對照關系見官網:
Runtime(winth hosting) + SDK: https://dotnet.microsoft.com/download
另,如果想在.NET Core 項目指定SDK版本,可以參考如下命令操作:
D:\proj\mq\test>dotnet --list-sdks 2.1.500 [C:\Program Files\dotnet\sdk] 2.1.801 [C:\Program Files\dotnet\sdk] 3.0.100 [C:\Program Files\dotnet\sdk] D:\proj\mq\test>dotnet new console -o testproj Getting ready... The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on testproj\testproj.csproj... D:\proj\mq\test\testproj\testproj.csproj ???? 83.4 ms ???? Restore succeeded. D:\proj\mq\test>dotnet --version 3.0.100 D:\proj\mq\test>cd testproj D:\proj\mq\test\testproj>dotnet new global.json --sdk-version 2.1.500 The template "global.json file" was created successfully. D:\proj\mq\test\testproj>dotnet --version 2.1.500
前后端不同站點
// NetCore 后端部分
0、編譯項目,保證代碼沒問題,並配置 CORS 跨域服務;
app.UseCors (builder => builder
.AllowAnyOrigin ()
.AllowAnyMethod ()
.AllowAnyHeader ()
.AllowCredentials ());
①、發布項目;//一般 publish 路徑是 bin/Debug/netcore2.2
②、拷貝到服務器指定文件夾;
③、IIS 添加站點;// 端口 1001
④、修改應用程序池為“無托管”;//這也是為啥要安裝 windows hosting 的原因
⑤、安裝 windows hosting(服務托管);//這是一個捆包,已經包含 Runtime
⑥、重啟項目,查看是否正常;http://localhost:1001/
// Vue 前端部分
①、Build 項目;
②、拷貝到服務器指定文件夾;
③、IIS 添加站點;// 端口 1002
④、運行項目,查看是否正常;http://localhost:1002/
前后端一個站點
操作步驟和上邊的其實是幾乎一樣的,只不過我們不需要配置 CORS 跨域了,因為是同一個站點,且是只需要一個端口號。
// NetCore 后端部分,和上邊的幾乎一樣,只不過不用進行 CORS 跨域設置
①、發布項目;
②、拷貝到服務器指定文件夾;
③、IIS 添加站點;// 端口 1003
④、修改應用程序池為“無托管”;//這也是為啥要安裝 windows hosting 的原因
⑤、安裝 windows hosting(服務托管);//這是一個捆包,已經包含 Runtime
⑥、重啟項目,查看是否正常;http://localhost:1003/
// Vue 前端部分
①、修改根路徑,並且 Build 項目;// 還要修改接口api的路徑
②、拷貝到服務器指定文件夾;//可以和 core 項目放到一起
③、修改 Core 的 IIS 站點,在它的站點內,嵌套一個vue站點(在Core的IIS站點右鍵選擇“添加應用程序”);// 取名為 Vue
④、運行項目,查看是否正常;http://localhost:1003/vue/
最后一點,其實你還可以通過CLI來運行你發布的程序,切換到你發布文件夾下,輸入以下命令:
dotnet NetCoreProj.API.dll