ASP.NET CoreをサポートするホスティングプロバイダーでASP.NET Coreプロジェクトとして公開しようとしています。非常に一般的であると思われる500内部サーバーエラーが発生しています。そこで、インターネットやさまざまなフォーラムを検索し、web.configでprocessPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%"
を確認しましたが、processPath="dotnet" and arguments=".\MyApplication.dll"
で正しく変換されているように見えます。
また、接続文字列を確認し、動作している本番DBサーバーをポイントしています。接続文字列を本番DBに変更し、プロジェクトをローカルで実行して、DB接続を確認しました。それは機能し、実稼働DBにアクセスできます。
また、Startup.csで以下を使用してエラー情報を取得しようとしました(envに関係なく):
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
また、web.configでstdoutLogを有効にしましたが、そのフォルダーも表示されません。
stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"
LaunchSettings.jsonのapplicationUrlとlaunchUrlをprod Urlに変更しようとしましたが、うまくいきませんでした。
そのため、500 Internal Server Errorは消えることを拒否し、有用なエラーメッセージはまだありません。ページには次のように書かれています:
エラー。500内部サーバーエラーアプリケーションの起動中にエラーが発生しました。
ここで誰かが私を助けてくれたら本当にありがたいです。
また、web.configでstdoutLogを有効にしましたが、そのフォルダも表示されません:
stdoutLogEnabled = "true" stdoutLogFile = "。\ logs\stdout"
ここに1つのトリックがあります-logs
とstdout
の両方のフォルダーを手動で作成する必要があります-そして、その後のみIISはlogs
フォルダー内にログファイルを作成します( stdout
ではない)-理由を聞かないでください。理由はわかりません;)
おっとっと。 500内部サーバーエラーアプリケーションの起動中にエラーが発生しました。
通常、Startup.csの設定に関する問題を意味します-最も一般的な問題には、DB自体の問題、移行の問題(Code Firstアプローチを使用している場合)、appsettings.jsの問題、ソーシャルログイン資格情報の問題などがありますSecretKeyがありません)...
.\logs\stdout
のログファイルを参照してください-これは、問題に関する詳細を見つける最も簡単な方法です:)
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
これらは、WebAppが完全に起動した後に機能しますが、アプリケーションの起動中には機能しません。
Lukaszのコメントに感謝します。ログを見ることができ、「ClientIdオプションを提供する必要がある」と述べられました。問題はUserSecretsにありました。 secrets.jsonは開発でのみ使用できるため、本番環境では秘密は見つかりませんでした。 appSettings.jsonに秘密があれば、うまくいきました。
さらに、これをローカル環境で複製するには、プロジェクトプロパティに移動し、環境変数ASPNETCORE_ENVIRONMENTを「Production」に変更して、ローカルで実行します。これにより、ローカルで500 Internal Server Errorが複製され、エラーメッセージが表示されます。
@Lukasz Makowejの回答にさらに情報を追加したいと思います。
フォルダーを作成する必要がある理由を見つけました。Microsoftのドキュメントには次のように書かれています。
stdoutLogFile-オプションの文字列属性。
".....モジュールがログファイルを作成するには、パスに指定されたフォルダーが存在する必要があります。.."
自分で作成する必要があります:)ここで確認してください:
https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/aspnet-core-module?view=aspnetcore-2.
また、私の場合、Webサイトに「ログ」フォルダーへのアクセス許可があることを検証する必要があったことを言わなければなりません。
また、ASP.NET Core Windows Server Hostingバンドルがインストールされていることを確認してください。これはIISとKestralサーバーの間にリバースプロキシを作成します。
詳細:
Web.configが適切であることを確認してください。サーバー上にないモジュール(書き換え)を参照する構文的に優れたweb.configに何度も踏み込まれました。 500応答エラー以外のエラーメッセージはどこにもありません。
web.configファイルでmodules = "AspNetCoreModuleV2"をmodules = "AspNetCoreModule"に変更します
Stdログは機能しませんでした。サーバーとローカルからすべての.ENT Coreランタイム/ SDKバージョンをアンインストールして、最新のものをインストールする必要がありました。
助けになったもう1つのことは、IISアプリをDNSなしでポート5000にバインドしたため、実際に http:// localhost:50