elsa-workflows / elsa-workflows/elsa-core

AddElsaSwagger throws error if passing options already defined

Open
#4,534 0 comments 0 reactions 0 assignees View on GitHub
documentation elsa 2 triaged
Dominant language
C#
Stars
7.9k
Forks
1.5k
Avg merge
15h 22m
Merged PRs (30d)
114

Description

```
builder.Services
.AddElsa(elsa => elsa
.UseEntityFrameworkPersistence(o => o.UseSqlServer(elsaDbConn), true)
.AddUserTaskActivities()
.AddActivitiesFrom() // add our custom activities
)
.AddElsaSwagger(c => c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "Elsa",
Version = "v1"
}))

```

Since the extension methods already defines this value (see above), an exception is thrown when the Invoke method is called. Not sure what the most effective solution to this would be, at least some level of validation and xml documentation of the extension

```
public static IServiceCollection AddElsaSwagger(this IServiceCollection services, Action? configure = null)
{
Action configure2 = configure;
return services.AddSwaggerExamplesFromAssemblyOf().AddSwaggerGen(delegate (SwaggerGenOptions c)
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "Elsa",
Version = "v1"
});
c.EnableAnnotations();
c.MapType(() => new OpenApiSchema
{
Type = PrimitiveType.String.ToString().ToLower(),
Example = new OpenApiString("Latest"),
Description = "Any of Latest, Published, Draft, LatestOrPublished or a specific version number.",
Nullable = true,
Default = new OpenApiString("Latest")
});
c.MapType(() => new OpenApiSchema
{
Type = PrimitiveType.String.ToString().ToLower(),
Example = new OpenApiString("System.String, mscorlib")
});
c.SchemaFilter(Array.Empty());
configure2?.Invoke(c);
});

```
```
at System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException[T](T key)
at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
at Microsoft.Extensions.DependencyInjection.SwaggerGenOptionsExtensions.SwaggerDoc(SwaggerGenOptions swaggerGenOptions, String name, OpenApiInfo info)
at ElsaBookmarkTest.Program.<>c.b__0_1(SwaggerGenOptions c) in D:\github\ElsaSandbox\ElsaBookmarkTest\Program.cs:line 32
at Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions.<>c__DisplayClass2_0.b__0(SwaggerGenOptions c)
at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
at Microsoft.Extensions.Options.UnnamedOptionsManager`1.get_Value()
at Swashbuckle.AspNetCore.SwaggerGen.ConfigureSwaggerGeneratorOptions..ctor(IOptions`1 swaggerGenOptionsAccessor, IServiceProvider serviceProvider, IWebHostEnvironment hostingEnv)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.ConstructorInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
...
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.