• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

欠落している.NET asyncのメトリクス

問題

非同期トランザクション WebApi、HttpClient、SqlCommand、SqlDataReader、NpgsqlCommand、またはカスタムインスツルメンテーションの場合は表示されません。この問題は、 New Relic の .NET エージェント で .NET Framework 4.0 以前の環境で作成されたアプリを、.NET Framework 4.5 以上に移行した場合によく発生します。

解決策

アプリのアップグレードパイプラインの設定

特定の appSetting または system.web の設定が必要となります。

  • WebApi1またはWebApi2
  • HttpClient、SqlCommand、SqlDataReader、またはNpgsqlCommandの非同期メソッド。
  • 非同期関連のカスタムトランザクションまたはカスタムインストルメンテーション
  • New Relic .NET エージェントのバージョン 5.11.53.0 以上
  • アプリのターゲットとなる.NET Framework 4.5以上

これらの条件に当てはまる場合は、.NET 4.5で導入されたアップグレードされたリクエスト処理パイプラインをアプリケーションで使用する必要があります。

アップグレードされたパイプラインを使用するには、 web.config に以下の設定のいずれかが含まれていることを確認してください。どちらの設定もない場合は、設定を追加してください。

おすすめです。新しいパイプラインとの互換性の確認

オプション:実行時に非同期コードの追加チェックを行うよう、.NETフレームワークに指示することができます。これらのチェックは、レガシー ASP パイプラインによって隠されている可能性のある非同期コードの一般的な問題を検出します。

問題なくパスした場合は、アプリが新しいパイプラインを正しく処理していると確信できます。詳しくは、 Microsoftの設定ドキュメント をご覧ください。

さらにチェックを強化するために、 web.config に以下を追加します。

<configuration>
<appSettings>
<add key="aspnet:AllowAsyncDuringSyncStages" value="false" />
</appSettings>
<configuration>

原因

レガシーの統合パイプラインが存在する場合、非同期インスツルメンテーションが無効になります。.NET 4.5以前では、統合されたパイプラインがデッドロックを引き起こす可能性がありました。この.NET Frameworkのバグの詳細については、以下を参照してください。

Copyright © 2022 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.