asp.NetcoreサイトがIISに公開された問題
3680 ワード
今日初めてasp全体をNetcoreサイトはIISに公開され、以前はLinuxサーバに公開されていた.
dotnet publish-c releaseコマンドのパブリッシュを開始し、ブラウザでサイトにアクセスするときに次のエラーが発生しました.
コマンドラインの下でパブリッシュ時に生成された実行可能ファイルはサイトが正常に動作します(WebサーバはKestrelを使用します).
Webを開きます.configファイルを見るとprocessPathの値が間違っています.
この値はパブリッシュ時に置き換えられるはずですが、どうして置き換えられていませんか?
プロジェクトへjsonの中で見ると、下の東を発見しました.
Webを目測するconfigの変換作業はdotnet publish-iisコマンドのタスクの1つです.
dotnet publish-iisコマンドを手動で実行します.
次のエラーメッセージが表示されます(実際にdotnet publishコマンドを使用しているときにこのエラーメッセージが表示されましたが、プロンプト文字が異なる色で区別されて表示されていないため、その時は注意していませんでした):
project.json中Microsoft.NETCore.Appのバージョンはすでに1.1.0なのに、どうして1.1.0-preview 1のエラーが見つからないのですか?
プロジェクトでjsonで巡視したところ、次のNuGetパッケージがMicrosoftに依存しているのではないかと疑った.NETCore.App 1.1.0-preview1.
これを最新版1.1.0-preview 4-finalにアップグレードし、問題を解決します.
dotnet publish-iisコマンドが正常に実行されました.
dotnet publish-c releaseコマンドも変換後のwebを生成する.config .
dotnet publish-c releaseコマンドのパブリッシュを開始し、ブラウザでサイトにアクセスするときに次のエラーが発生しました.
HTTP Error 502.5 - Process Failure
Common causes of this issue:
The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process’ stdout messages
Attach a debugger to the application process and inspect
コマンドラインの下でパブリッシュ時に生成された実行可能ファイルはサイトが正常に動作します(WebサーバはKestrelを使用します).
Webを開きます.configファイルを見るとprocessPathの値が間違っています.
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
この値はパブリッシュ時に置き換えられるはずですが、どうして置き換えられていませんか?
プロジェクトへjsonの中で見ると、下の東を発見しました.
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
Webを目測するconfigの変換作業はdotnet publish-iisコマンドのタスクの1つです.
dotnet publish-iisコマンドを手動で実行します.
dotnet publish-iis -p "bin\release
etcoreapp1.1\win8-x64\publish" -f win8-x64
次のエラーメッセージが表示されます(実際にdotnet publishコマンドを使用しているときにこのエラーメッセージが表示されましたが、プロンプト文字が異なる色で区別されて表示されていないため、その時は注意していませんでした):
The specified framework 'Microsoft.NETCore.App', version '1.1.0-preview1-001100-00' was not found.
- Check application dependencies and target a framework version installed at:
C:\Program Files\dotnet\shared\Microsoft.NETCore.App
- The following versions are installed:
1.1.0
- Alternatively, install the framework version '1.1.0-preview1-001100-00'
project.json中Microsoft.NETCore.Appのバージョンはすでに1.1.0なのに、どうして1.1.0-preview 1のエラーが見つからないのですか?
プロジェクトでjsonで巡視したところ、次のNuGetパッケージがMicrosoftに依存しているのではないかと疑った.NETCore.App 1.1.0-preview1.
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-*",
"imports": "portable-net45+win8+dnxcore50"
}
}
これを最新版1.1.0-preview 4-finalにアップグレードし、問題を解決します.
dotnet publish-iisコマンドが正常に実行されました.
$ dotnet publish-iis -p "bin\release
etcoreapp1.1\win8-x64\publish" -f win8-x64
Configuring the following project for use with IIS: 'bin\release
etcoreapp1.1\win8-x64\publish'
Updating web.config at 'bin\release
etcoreapp1.1\win8-x64\publish\web.config'
Configuring project completed successfully
dotnet publish-c releaseコマンドも変換後のwebを生成する.config .
<aspNetCore processPath=".\CNBlogs.XXX.WebApi.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />