Problème
Vous ne voyez pas de transactions asynchrones pour WebApi
, HttpClient
, SqlCommand
, SqlDataReader
, NpgsqlCommand
ou l'instrumentation personnalisée. Ce problème se produit généralement pour les applications créées avec l'agent .NET de New Relic sous .NET Framework 4.0 ou une version antérieure, puis migrées vers .NET Framework 4.5 ou une version ultérieure.
Solution
Mise à niveau de l'applicationParamètres pour le pipeline
Un paramètre appSetting
ou system.web
spécifique est requis si vous utilisez :
- WebApi1 ou WebApi2
- Méthodes asynchrones dans
HttpClient
,SqlCommand
,SqlDataReader
ouNpgsqlCommand
- Transactions personnalisées liées à l'asynchrone ou instrumentation personnalisée
- New Relic .NET agent version 5.11.53.0 ou supérieure
- .NET Framework 4.5 ou supérieur comme cible pour votre application
Si ces conditions s’appliquent, vous devez vous assurer que votre application utilise le pipeline de traitement des demandes mis à niveau introduit dans .NET 4.5.
Pour utiliser le pipeline mis à niveau, assurez-vous que votre web.config
inclut l’un des paramètres suivants. Si aucun paramètre n’apparaît, ajoutez-en un :
Recommandé : vérifier la compatibilité avec le nouveau pipeline
Facultatif : vous pouvez indiquer au framework .NET d’effectuer des vérifications supplémentaires de votre code asynchrone au moment de l’exécution. Ces vérifications détectent les problèmes courants dans le code asynchrone, qui peuvent être masqués par le legacy ASP pipeline.
Si votre application réussit sans aucun problème, vous pouvez être sûr que votre application gère correctement le nouveau pipeline. Pour plus d'informations, consultez la documentation de configuration de Microsoft.
Pour appliquer des contrôles supplémentaires, ajoutez ce qui suit à web.config
:
<configuration> <appSettings> <add key="aspnet:AllowAsyncDuringSyncStages" value="false" /> </appSettings><configuration>
Cause
asynchrone instrumentation est désactivée si le legacy intégré pipeline est présent. Avant .NET 4.5, le pipeline intégré pouvait provoquer des blocages. Pour plus d'informations sur ce bug du framework .NET, consultez :