首页 > 解决方案 > 无法将应用程序洞察添加到服务结构无状态 asp.net 核心项目

问题描述

我正在尝试使用以下指南将应用程序见解添加到项目中。 https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-tutorial-monitoring-aspnet

我的项目是一个服务结构服务 => .net 框架 => 无状态 asp.net 核心如下: 服务结构项目菜单

包含该项目的服务结构已经工作并已发布。现在,当我添加应用程序洞察并在本地运行服务结构时,它已编译并运行,但 asp.net 服务不运行。在我启动服务结构大约一分钟后的诊断事件中,以下运行状况报告错误堆栈跟踪声称对 basePath 的引用为空:

{
  "Timestamp": "2019-04-23T14:01:00.9644622+03:00",
  "ProviderName": "Microsoft-ServiceFabric",
  "Id": 54430,
  "Message": "EventName: StatelessReplicaNewHealthReport Category: Health Partition=4d20cbee-372e-42d1-952e-738538152b1e StatelessInstance=132004907032061609 SourceId=System.RA Property=ReplicaOpenStatus HealthState=Warning TTL=922337203685477ms SequenceNumber=132004908536921071 Description='Replica had multiple failures during open on _Node_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.CreateValue()
       at System.Lazy`1.LazyInitValue()
       at Microsoft.ApplicationInsights.AspNetCore.TelemetryInitializers.ComponentVersionTelemetryInitializer..ctor(IOptions`1 options)
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       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.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
       at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
       at Microsoft.Extensions.DependencyInjection.ApplicationInsightsExtensions.<>c.<AddApplicationInsightsTelemetry>b__13_1(IServiceProvider provider)
       at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, 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.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 Micro [Truncated]' RemoveWhenExpired=False SourceUTCTimestamp=04/23/2019 14:00:53 ",
  "ProcessId": 10100,
  "Level": "Informational",
  "Keywords": "0x4000000000000001",
  "EventName": "HM",
  "ActivityID": null,
  "RelatedActivityID": null,
  "Payload": {
    "eventName": "StatelessReplicaNewHealthReport",
    "category": "Health",
    "eventInstanceId": "\"ae7ebe56-19d6-4c36-a6dd-5c12e9a3d36e\"",
    "partitionId": "\"4d20cbee-372e-42d1-952e-738538152b1e\"",
    "replicaId": 132004907032061609,
    "sourceId": "System.RA",
    "property": "ReplicaOpenStatus",
    "healthState": 2,
    "TTLtimespan": 922337203685477,
    "sequenceNumber": 132004908536921071
  }
}

]

我尝试在 ConfigureAppConfiguration 方法中注入 asp.net 核心配置(感谢这篇文章https://marcinjuraszek.com/2018/10/asp-net-core-configuration-when-running-as-service-fabric-service。 html ) 但它似乎设置了 asp.net 核心配置的基本路径,而不是应用程序洞察力。

标签: c#asp.net-coreazure-service-fabricazure-application-insights

解决方案


推荐阅读