Я пытаюсь ввести 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" />
Любые идеи, что такое происходит?