web-dev-qa-db-fra.com

'Impossible de charger le type "Microsoft.aspnetcore.mvc.mvcjsonoptions" de Assembly' Microsoft.aspnetcore.mvc.formatters.json, version = 3.0.0.0

J'utilise netstandard2.1 Bibliothèque dans mon netcoreapp3.0 application Web. Lorsque vous ajoutez mon service en Startup, je reçois l'erreur ci-dessous:

'Impossible de charger le type "Microsoft.aspnetcore.mvc.mvcjsonoptions" de Assembly' Microsoft.aspnetcore.mvc.formatters.json, version = 3.0.0.0

J'utilise également certaines fonctionnalités de Microsoft.AspNetCore.Mvc 2.2.0 Package dans ma bibliothèque de classe.

Voici ma bibliothèque .csproj,

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
  </ItemGroup>

</Project>

Voici mon ServiceExtensions classe de ma bibliothèque,

public static class ServiceExtensions
{
    public static IMvcBuilder AddMyLibrary(this IMvcBuilder builder)
    {
        builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        builder.AddJsonOptions(options =>
        {
            options.SerializerSettings.ContractResolver = new DefaultContractResolver();
        });
        builder.Services.ConfigureOptions<ConfigureLibraryOptions>();

        return builder;
    }
}

Voici mon ConfigureLibraryOptions classe,

public class ConfigureLibraryOptions : IConfigureOptions<MvcOptions>
{
    public void Configure(MvcOptions options)
    {
        options.ModelBinderProviders.Insert(0, new CustomBinderProvider());
    }
}

Voici le ConfigureServices de Startup,

services.AddControllersWithViews().AddMyLibrary();

S'il vous plaît aider pourquoi je reçois cette erreur et aide à la façon de résoudre ce problème?

25
fingers10

Lorsque vous configez "Swashbuckle.aspnetcore", nécessaire pour configurer Apikeyscheme devenir OpenApisecurityScheme, il change le schéma de

 c.AddSecurityDefinition("Bearer", new ApiKeyScheme { In = "header", Description = 
 "Please enter JWT with Bearer into field", Name = "Authorization", Type = "apiKey" 
 });
 c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>> {
 { "Bearer", Enumerable.Empty<string>() }, });

À

    c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
    Description =
        "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"",
    Name = "Authorization",
    In = ParameterLocation.Header,
    Type = SecuritySchemeType.ApiKey,
    Scheme = "Bearer"
});

c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
    {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id = "Bearer"
            },
            Scheme = "oauth2",
            Name = "Bearer",
            In = ParameterLocation.Header,

        },
        new List<string>()
    }
});
0