web-dev-qa-db-ja.com

Azure WebサイトにデプロイされたASP.NET 5アプリのエラー詳細を取得する方法

Webサイトといくつかのプロジェクトライブラリを備えたASP.NET 5ソリューションがあります。 MVC 6とEntity Framework 7を使用しています。ローカルではアプリは正常に動作しており、今日までAzure WebサイトとしてデプロイされたAzureでも動作していました。

しかし、今日、Azureでの最新の展開の後、スタートアップで次のようなエラー500が発生しました(ローカルで正常に動作しています)。

enter image description here

詳細を取得しようとしました:

  • ミドルウェア診断の使用
  • web.configファイルにcustomError/httpError設定を追加する
  • 生成されたDetailedErrorページのダウンロード

スタートアップ/設定ステップでエラー/例外が発生しているようですが、詳細が表示されない一般的なエラーページが表示されます。サーバー(DetailedErrorsフォルダー)で生成されたバージョンでさえ、私はこれを得ました:

enter image description here

Failed Request Tracingを有効にしましたが、まだ有用な情報はありません。

enter image description here

Startup/Configureのコードを削除して、提案どおりにtry/catchを追加しても、詳細なしで同じエラーが発生しました。これは構成/コンパイルの問題のようですが、情報なしでデバッグするのは困難です。

40
MatthieuGD

RC1(おそらくbeta8の時点)では、明らかに以下を使用する必要があります。

app.UseDeveloperExceptionPage();

..これは、明らかにapp.Properties["Host.AppMode"]"development"

しかし、これは私にはうまくいきませんでした。私が得ていたエラーメッセージは、具体的には「アプリケーションの起動中にエラーが発生しました」でした。実行します。

どういうわけか、展開ディレクトリ全体を削除して再公開することで問題が解決したため、公開中に公開ターゲットフォルダが破損しているに違いありません。

それ以外の場合、参照は次のとおりです。 http://docs.asp.net/en/latest/fundamentals/diagnostics.html https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/error-handling

20
Jon Davis

ASPNET5アプリケーションの起動時に発生するエラーは、Azureでアプリケーションを実行する場合(少なくともベータ3では)追跡するのが非常に困難です。うまくいけば、彼らは経験を改善する方法を見つけます。スタートアップをむき出しの骨まで取り除いてから、失敗が発生するまでコードを1行ずつ追加しなければなりませんでした(私の場合は、環境変数がありませんでした)。

また、エラーの発生場所に応じて役立つ可能性のある次のようなコード(デバッグ専用)を使用しました。

public void Configure(IApplicationBuilder app, IHostingEnvironment env )
    {           
        try
        {                       
            // Add MVC to the request pipeline.
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action}/{id?}"
                   );
            });
        }

//exceptions in startup are really bad when running in Azure, all you will get is an internal server error
//this code will write the exception message to the browser instead.  Only use for debugging!!!

      catch (Exception ex)          
      {
            app.Run(async context =>
            {
                context.Response.ContentType = "text/plain";
                await context.Response.WriteAsync(ex.Message);
            });
        }
    }

2016年10月27日更新私の最初の回答以来、多くのことが変更されました。最新のガイダンスは次のとおりです。

https://docs.asp.net/en/latest/fundamentals/hosting.html

したがって、追加:

.CaptureStartupErrors(true)および.UseSetting(WebHostDefaults.DetailedErrorsKey、 "true")は、WebHostBuilderで次のようになります。

 var Host = new WebHostBuilder()
            .CaptureStartupErrors(true)
            .UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();
20
NPNelson

アプリ設定プロパティASPNET_DETAILED_ERRORStrue inweb.configファイルに設定する必要があります。

編集したweb.configファイルの例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="bootstrapper-version" value="1.0.0-beta6" />
    <add key="runtime-path" value="..\approot\runtimes" />
    <add key="dnx-version" value="1.0.0-beta6" />
    <add key="dnx-clr" value="clr" />
    <add key="dnx-app-base" value="..\approot\src\MyApp" />
    <!-- This will turn on detailed errors when deployed to remote servers -->
    <!-- This setting is not recommended for production -->
    <add key="ASPNET_DETAILED_ERRORS" value="true" />
  </appSettings>
  <system.web>
    <httpRuntime targetFramework="4.5.1" />
  </system.web>
</configuration>
8
HolaJan

Dnx-clr-win-x64.1.0.0-rc1-update1を実行しているWebアプリでもまったく同じエラーが発生しました。 Visual Studio 2015 Enterprise Update 1から直接展開を行いました。新しく作成したWebアプリで最初の展開を行うたびにサイトが機能していることがわかりました。 2番目の展開から(まったく同じコンテンツを展開する場合でも)、Internal Server Error 500が表示されるようになりました。これにより、次のソリューションが実現しました。

Visual Studioの発行ウィザードで[宛先の追加ファイルを削除]を有効にすると、修正されました。

enter image description here

8
JRoppert

私は同じ問題を抱えており、エラーログなどを掘り下げるのに多くの時間を費やしました(上記の他のすべてのソリューション)。何が間違っているのかについての手がかりを与えてくれません。

私がやったことは、最終的にエラーを確認するのに役立ちました ローカルIISに発行 (すべてのAzure WebアプリケーションがdnxをIIS内部で実行した後) 。

その後、IIS=がソースをコンパイルしようとするとエラーが発生することがすぐにわかりました(私の場合は、不正な形式のnugetパッケージでした)。

要するに:

ローカルIISに発行することにより、Azure Webアプリで何が起こるかを再作成します。

5
Mo Valipour

web.configこのコンテンツを含むwwwrootフォルダー内:

<configuration>
  <system.web>
    <customErrors mode="Off" />
  </system.web>
</configuration>
4
Bart Calixto

Eventlog.xmlファイルをチェックインしましたか? D:\ home\LogFilesディレクトリにあります。アプリのKuduサイトから表示するか、Azure Websites Event Viewer拡張機能を使用できます。

3
BenV

Azure WebappRemote Debuggingを使用してみましたか?これの原因となる例外が発生する可能性があります。[デバッグ出力]ウィンドウを見ると、どの例外が発生しているかを確認し、Visual Studioの設定を変更してその例外を発生させてどこで発生しているかを確認できます。リモートデバッグの方法を理解するには、この記事を確認してください- http://blogs.msdn.com/b/webdev/archive/2013/11/05/remote-debugging-a-window-Azure-web-site- with-visual-studio-2013.aspx

3
Puneet Gupta

Beta5の場合、web.configのカスタムエラーは役に立ちませんでした。ローカルIISは問題ありませんでした。例外ハンドラを追加しても何も表示されませんでした。 approotおよび再デプロイ。

1
Jeff Dunlop

Webアプリの[アプリケーションの設定]セクションの[アプリの設定]セクションで、Hosting:EnvironmentDevelopmentに追加(または値を変更)します。次に、ローカル開発と同じエラーページが表示されます。 Startup.csには、次のコードを含む通常のConfigure()メソッドがあります:(MVC 1.0 RC1-finalのまま)

        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
            app.UseDatabaseErrorPage();
        }
        else

お役に立てれば!

0
Peter Lindgren