Внедрение JwtBearerOptions в Azure функций приводит к MissingMethodException - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь ввести IOptions<JwtBearerOptions> в конструктор Azure Functions. Может быть несколько причин, почему то, что я делаю неправильно, но что меня действительно беспокоит, так это определение того, почему я получаю MissingMethodException. Вот мой сжатый код:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        var Configuration = builder.Services.BuildServiceProvider().GetService<IConfiguration>();

        builder.Services.AddJwtBearerForFunctions(o =>
            o.TokenValidationParameters = new TokenValidationParameters
            {
                ValidIssuer = Configuration["JwtToken:Issuer"],
            });
    }
}

public static class JwtBearerFunctionsExtensions
{
    public static IServiceCollection AddJwtBearerForFunctions(this IServiceCollection services, Action<JwtBearerOptions> configureOptions) => 
        services.Configure(configureOptions);
}

// Function1 class constructor
    public Function1(IOptions<JwtBearerOptions> jwtOptions) => _jwtOptions = jwtOptions.Value;

И вот ошибка:

Сообщение: «Метод не найден:» Void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.set_TokenValidationParameters (Microsoft .IdentityModel.Tokens.TokenValidationParameters) '. "

Но TokenValidationParameters имеет сеттер в классе JwtBearerOptions. И нет проблемы с компиляцией. Можно подумать, что VS загружает не тот модуль, но я тоже это проверил. Я даже отлаживал класс JwtBearerOptions. Это правильный код, но он не видит установщика.

Это использует Azure Функции v3, нацеленные на netcoreapp3.1, и имеет следующие зависимости

<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.4" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.6.0" />

Любые идеи, что такое происходит?

...