我正在设置此诊断以帮助解决没有调用我的 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 包。