- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 225
Closed
Labels
Description
Problem Statement
Dotnet 9 has included support for using the IHostApplicationBuilder style for app creation
With the new style we dont have access to the HostBuilderContext
var builder = FunctionsApplication.CreateBuilder(args);
builder.UseSentry(<missing>, options =>
{
    ...
});
Temporary workaround:
var builder = FunctionsApplication.CreateBuilder(args);
var context = new HostBuilderContext(new Dictionary<object, object>())
{
    Configuration = builder.Configuration,
};
builder.UseSentry(context, options =>
{
    ...
});
I see 2 obvious solutions:
Either add a builder extension with using FunctionsApplicationBuilder
or do a cast
    public static IHostApplicationBuilder UseSentry(
        this IFunctionsWorkerApplicationBuilder builder,
        Action<SentryAzureFunctionsOptions>? optionsConfiguration)
    {
        builder.UseMiddleware<SentryFunctionsWorkerMiddleware>();
        IServiceCollection services = builder.Services;
        IConfigurationSection section;
        if (builder is IHostApplicationBuilder applicationBuilder)
        {
            section = applicationBuilder.Configuration.GetSection("Sentry");
        }
        else
        {
            throw new ArgumentException("builder is not a IHostApplicationBuilder");
        }
        
        services.AddSingleton<IConfigureOptions<SentryAzureFunctionsOptions>>((Func<IServiceProvider, IConfigureOptions<SentryAzureFunctionsOptions>>) (_ => (IConfigureOptions<SentryAzureFunctionsOptions>) new SentryAzureFunctionsOptionsSetup((IConfiguration) section)));
        if (optionsConfiguration != null)
            services.Configure<SentryAzureFunctionsOptions>(optionsConfiguration);
        services.AddLogging();
        services.AddSingleton<ILoggerProvider, SentryAzureFunctionsLoggerProvider>();
        services.AddSingleton<IConfigureOptions<SentryAzureFunctionsOptions>, SentryAzureFunctionsOptionsSetup>();
        services.AddSentry<SentryAzureFunctionsOptions>();
        return builder;
    }
Solution Brainstorm
No response
GetoXs
Metadata
Metadata
Assignees
Labels
Projects
Status
Done
Status
No status