ASP.NET 5WebアプリケーションをAzureWebアプリケーションに展開すると、500内部サーバーエラーが発生します。
この例外の詳細とスタックトレースを取得するにはどうすればよいですか?
私は次のことをしましたが、運がありませんでした:
起動時に診断エラーページを使用する:
app.UseErrorPage();
設定ASPNET_ENV
Azureポータルの場合:
DNXベータ6を使用します。
この投稿 (Muhammadに感謝)によると、サーバーのweb.config(非常に正しい、Celt)を編集することで、Azureでランタイムエラーを取得できるはずです。
残念ながら、これは機能しませんでした-詳細な例外はありません。
調べてみると、次の「DetailedError」ログが見つかりました。
これは彼らが含んでいたものです:
favicon.ico
でD:\home\site\wwwroot\favicon.ico
を解決しようとしたときに、問題が発生した可能性があります。
その場所には確かにファビコンはありませんでした。私はこれを修正しましたが、それでも同じ問題です。実際、私はファビコンを持ったことがなく、これは以前は機能していました。
最後に、Azure PortalでWebアプリ全体を削除し、再公開しました... TADA、再び機能します。
これが誰かを助ける場合に備えて、ASP.NET RC1を使用していて、Azure WebAppsを使用していて、値がdevelopment
のHosting:Environment
というアプリ設定を追加していることがわかりました。サーバー500エラーのスタックトレースが表示されます。
これを機能させるには、Startup.csのConfigureメソッドで、開発環境を使用しているときに[開発者の例外]ページを使用する必要があります。例えば:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
// etc
}
ASP.NET5を実行しているAzureWebアプリケーションからHTTP500を取得し、詳細なエラー出力を取得できない場合、私の経験では、次の2つの理由のいずれかが原因です。
最初のタイプの問題に対処するには、起動エラーをどこかにログに記録するエラーハンドラーを作成することをお勧めします(そのためにRaygun.ioを使用します。ニーズと設定によって、ソリューションが決まります)。
2番目の種類の場合、私が思いついた最善の方法は、Webサイトの診断機能を使用することです。WindowsServerのイベントログにアクセスして、ランタイムが中断されているかどうかを確認できます。
あなたのstartup.csには、AzureでNiceを再生していないランタイムコードがいくつかあります。 app.UseDeveloperExceptionPage();を移動して、開発者向けの例外ページを強制的にレンダリングします。 Configure(...)の先頭に移動します。更新されたコードをAzureに公開し、ホームページをリロードすると、例外が役立つようになります。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseDeveloperExceptionPage();
...
}
次のように、Web.configファイルでcustomErrors
モードをオフに設定してみてください。
<system.web>
<customErrors mode="Off" />
</system.web>
私はまったく同じ問題を抱えていました-常に500を取得し、何が悪いのかという最も小さなログや情報を見たことがありませんでした。 Startup.csのすべてをコメントアウトし、静的ファイルにアクセスした後でも、500を取得していました(驚くべきことに、静的ファイルwasが正しく提供されたにもかかわらず、同じアプリの公開から公開に変更されました)。
デプロイメントで一部のファイルが破損し、Azureがそれを検出しなかったと思います。または、実行時に競合を引き起こすファイルがサーバーに残っている可能性があります-次回は、サーバーに余分なファイルを保持しないように公開プロファイルを変更することも価値があると思います(デフォルトではそれらは削除されません)。
結局、アプリを削除して再作成し、問題を解決しました。
私のような古いバージョンのDNXスタックをまだ使用している場合(Visual Studio 2015に付属しているbeta5を使用)、実際には十分に文書化されていない設定がありました。それ以来、これは変更されたと思いますが、web.configに配置する必要があるものは次のとおりです。
<appSettings>
<add key="ASPNET_DETAILED_ERRORS" value="true" />
</appSettings>