1. 服務(wù)器環(huán)境配置:下載正確的Runtime和 .NET Core Hosting Bundle
這一步一定要選對版本號(hào),否則會(huì)出現(xiàn)502.5錯(cuò)誤同蜻。首先查看自己機(jī)器上(開發(fā)機(jī))的.net core sdk版本:
然后到這里https://dotnet.microsoft.com/download/dotnet-core感昼,點(diǎn)擊自己的大版本進(jìn)入
在打開的頁面往下拉殿衰,找到自己的小版本窗声,下載對應(yīng)的 Runtime & Hosting Bundle
在服務(wù)器上安裝下載好的文件蘑拯。
2. 服務(wù)器建立IIS站點(diǎn)巧颈,與平常站點(diǎn)無異畦木;但是應(yīng)用程序池要選無托管代碼
3. 工程設(shè)置
-
檢查發(fā)布json文件,尤其是數(shù)據(jù)庫連接字符串是否能在服務(wù)器上連接成功
-
發(fā)布設(shè)置砸泛,選擇本地文件發(fā)布
4. 發(fā)布好了以后上傳服務(wù)器即可
trouble shooting
.net core iis 托管(其實(shí)不能叫托管了十籍,對于.net core項(xiàng)目iis只是起到一個(gè)轉(zhuǎn)發(fā)作用,類似nginx)會(huì)出現(xiàn)很多莫名奇妙的錯(cuò)誤唇礁,最常見的是502.3勾栗,需要一個(gè)一個(gè)排查
- 首先最重要的一點(diǎn),如果iis啟動(dòng)失敗盏筐,在項(xiàng)目目錄下控制臺(tái)輸入
dotnet 你的工程名.dll
看看項(xiàng)目能否啟動(dòng)围俘,若啟動(dòng)不了肯定是項(xiàng)目的問題了。 - 如果能啟動(dòng)琢融,但I(xiàn)IS啟動(dòng)錯(cuò)誤界牡,首先檢查目錄下的web.config文件,因?yàn)榭刂婆_(tái)不用這個(gè)文件漾抬,IIS要用到:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\XXXXXXXXXX.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
<security>
<requestFiltering>
<!-- 2GB -->
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
首先打開日志:stdoutLogEnabled="true"
然后嘗試指定.netcore路徑:將<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
改為<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
然后如果項(xiàng)目能啟動(dòng)了宿亡,但是有錯(cuò)誤,查看log發(fā)現(xiàn)問題纳令。
如果出現(xiàn)502 badgateway挽荠,可以在項(xiàng)目csproj文件中加入一句話試試
<PropertyGroup>
//.....
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
以上就是我經(jīng)歷過的所有IIS發(fā)布問題