.net-5 - 使用 Oakton 检查我的 Net5 核心应用程序的 Lamar 配置并获得空引用,我该如何解决这个问题?
问题描述
我正在设置此诊断以帮助解决未调用我的 ValidationBehavior 的调解器管道行为问题。下面是用于配置 Lamar、MassTransit 和 Serilog 的主机构建器设置:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseLamar((HostBuilderContext, registry) =>
{
registry.CheckLamarConfiguration();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.ConfigureAppConfiguration(cfgBuilder =>
{
var settings = cfgBuilder.Build();
var connection = settings.GetConnectionString("AppConfig1");
if (!string.IsNullOrEmpty(connection))
{
cfgBuilder.AddAzureAppConfiguration(options =>
{
options.Connect(connection)
.Select(keyFilter: "PhoenixApp:*", labelFilter: "Development")
.UseFeatureFlags(featureFlagOptions =>
{
featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(30);
})
.ConfigureRefresh(refresh =>
{
refresh.Register("PhoenixApp:Sentinel", refreshAll: true)
.SetCacheExpiration(new TimeSpan(0, 30, 0));
})
.ConfigureKeyVault(kv => { kv.SetCredential(new DefaultAzureCredential()); });
});
}
})
.ConfigureServices((context, services) =>
{
services.TryAddSingleton(KebabCaseEndpointNameFormatter.Instance);
services.AddMassTransit(cfg =>
{
cfg.UsingRabbitMq((context, cfg) => { cfg.ConfigureEndpoints(context); });
cfg.AddRequestClient<ISubmitOrder>();
cfg.AddRequestClient<ICheckOrder>();
cfg.AddSagaStateMachine<OrderStateMachine, OrderState>()
.RedisRepository();
});
services.AddMassTransitHostedService();
})
.ConfigureLogging(loggingConfiguration =>
loggingConfiguration
.ClearProviders())
.UseSerilog((hostingContext, loggerConfiguration) =>
loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration, "PhoenixApp:Serilog")
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning))
.UseDefaultServiceProvider((context, options) =>
{
options.ValidateScopes = context.HostingEnvironment.IsDevelopment();
options.ValidateOnBuild = true;
})
.UseStartup<Startup>();
});
我正在使用以下命令调用 Oakton 诊断:
dotnet run -- lamar-services
这是我正在使用的软件包列表:
<ItemGroup>
<PackageReference Include="Ardalis.GuardClauses" Version="3.2.0" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
<PackageReference Include="Azure.Identity" Version="1.3.0" />
<PackageReference Include="FluentValidation.AspNetCore" Version="10.1.0" />
<PackageReference Include="FluentValidation.DependencyInjectionExtensions" Version="10.1.0" />
<PackageReference Include="Lamar" Version="5.0.3" />
<PackageReference Include="Lamar.Diagnostics" Version="3.0.2" />
<PackageReference Include="Lamar.Microsoft.DependencyInjection" Version="5.0.3" />
<PackageReference Include="MassTransit" Version="7.1.7" />
<PackageReference Include="MassTransit.Analyzers" Version="7.1.7" />
<PackageReference Include="MassTransit.AspNetCore" Version="7.1.7" />
<PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="7.1.7" />
<PackageReference Include="MassTransit.RabbitMQ" Version="7.1.7" />
<PackageReference Include="MassTransit.Redis" Version="7.1.7" />
<PackageReference Include="MediatR" Version="9.0.0" />
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" />
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.17.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.4" />
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="4.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.13" />
<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.17.0" />
<PackageReference Include="Oakton.AspNetCore" Version="3.0.0" />
<PackageReference Include="Scrutor.AspNetCore" Version="3.3.0" />
<PackageReference Include="Serilog" Version="2.10.1-dev-01285" />
<PackageReference Include="Serilog.AspNetCore" Version="4.0.1-dev-00219" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3-dev-00759" />
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
<PackageReference Include="Serilog.Expressions" Version="1.1.1" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.1.2" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.2.0-dev-00264" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Graylog" Version="2.2.2" />
<PackageReference Include="Serilog.Sinks.Seq" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
不确定如何调试 Oakton - 它似乎没有找到合适的 Lamar.Diagnostics 包。
解决方案
推荐阅读
- python - 计算 Django 模型中最常用的单词
- java - JUnit 4禁用'没有找到匹配的测试'错误
- python - 如何处理分裂(python)中的硒异常?
- mysql - mysql LEFT JOIN 不像左连接
- python - 鼠标点击后更改屏幕区域的颜色,并在发布 Pygame 后保持更改
- python - Dask 是否保证分区内的行(具有非唯一索引)永远不会被重新排序?
- arrays - 如何在本机反应中构造多个字典以排列
- javascript - 如何在 JavaScript 中的 XPath 中包含字符串变量?
- java - 将多个输入打印成不同的纯文本 - Android Studio
- html - 图像地图区域上的自定义指针光标恢复为默认值