Sitelet https://github.com/microsoft/ApplicationInsights-aspnetcore/issues/696
Skip to content
This repository was archived by the owner on Jun 10, 2020. It is now read-only.
This repository was archived by the owner on Jun 10, 2020. It is now read-only.

ArgumentNullException caused by DefaultApplicationInsightsServiceConfigureOptions  #696

Description

I'm updating to .NET Core 2.1 and I'm running into an error that seems new.
I'm using this library in .NET Core services on Service Fabric (not Kestrel ASP.Net Core services) and it looks like a new change has caused some issues because IHostingEnvironment has a null ContentRootPath.

This is the callstack I get:

g
 Unhealthy event: SourceId='System.RA', Property='ReplicaOpenStatus', HealthState='Warning', ConsiderWarningAsError=false.
Replica had multiple failures during open on _nt1vm_0. API call: IStatelessServiceInstance.Open(); Error = System.ArgumentNullException (-2147467261)
Value cannot be null.
Parameter name: basePath
   at Microsoft.Extensions.Configuration.FileConfigurationExtensions.SetBasePath(IConfigurationBuilder builder, String basePath)
   at Microsoft.AspNetCore.Hosting.DefaultApplicationInsightsServiceConfigureOptions.Configure(ApplicationInsightsServiceOptions options)
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at Microsoft.ApplicationInsights.AspNetCore.TelemetryInitializers.ComponentVersionTelemetryInitializer..ctor(IOptions`1 options)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
   at Microsoft.Intentional.Services.Utilities.ServiceFabric.Logging.ServiceFabricApplicationInsightsConfiguration.ConfigureServiceFabricApplicationInsights[T](ILoggingBuilder loggingBuilder, IConfiguration configuration, T serviceContext)
   at Microsoft.Intentional.SharesService.Program.<>c__DisplayClass0_0.
b__1(ILoggingBuilder builder) in C:\Users\joschm\Intentional\services\src\SharesService\Program.cs:line 55
   at Microsoft.Extensions.DependencyInjection.LoggingServiceCollectionExtensions.AddLogging(IServiceCollection services, Action`1 configure)
   at Microsoft.Intentional.SharesService.Program.<>c.
b__0_0(StatelessServiceContext context) in C:\Users\joschm\Intentional\services\src\SharesService\Program.cs:line 46
   at Microsoft.ServiceFabric.Services.Runtime.StatelessServiceInstanceFactory.System.Fabric.IStatelessServiceFactory.CreateInstance(String serviceTypeName, Uri serviceName, Byte[] initializationData, Guid partitionId, Int64 instanceId)
   at System.Fabric.ServiceFactoryBroker.<>c__DisplayClass9_0.b__0(IStatelessServiceFactory factory, ServiceInitializationParameters initParams)
   at System.Fabric.ServiceFactoryBroker.CreateHelper[TFactory,TReturnValue](IntPtr nativeServiceType, IntPtr nativeServiceName, UInt32 initializationDataLength, IntPtr nativeInitializationData, Guid partitionId, Func`3 creationFunc, Action`2 initializationFunc, ServiceInitializationParameters initializationParameters)
For  [Truncated]

Here's the line of code where this happens: https://github.com/Microsoft/ApplicationInsights-aspnetcore/blame/43a74c64d01b11929da6a96a9e4501dad5620e53/src/Microsoft.ApplicationInsights.AspNetCore/Extensions/DefaultApplicationInsightsServiceConfigureOptions.cs#L31

It looks like the DefaultApplicationInsightsServiceConfigureOptions was DI'ed by default now according to this change: https://github.com/Microsoft/ApplicationInsights-aspnetcore/blame/05dbca38b5ebd54df3fdf1968d497d3ed91c6782/src/Microsoft.ApplicationInsights.AspNetCore/Extensions/ApplicationInsightsExtensions.cs#L181

Is there any way to work around this? Without creating a fake IHostingEnvironment to get this happy?

Version Info

image

SDK Version : 2.3.0
.NET Version : .NET Core 2.1
How Application was onboarded with SDK(VisualStudio/StatusMonitor/Azure Extension) : Service Fabric
OS : Windows Server 2016 R2
Hosting Info (IIS/Azure WebApps/ etc) :

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions