Asp.net core Необработанное исключение. System.ArgumentNullException: значение не может быть нулевым. (Параметр «поставщC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Asp.net core Необработанное исключение. System.ArgumentNullException: значение не может быть нулевым. (Параметр «поставщ

Сообщение Anonymous »

Я пытаюсь имитировать пользователя в своем основном веб-приложении API asp.net (сейчас у меня нет никакой информации о том, как пользователь будет аутентифицироваться, но мне нужно протестировать перенесенный API). Для этого я создал образец приложения, чтобы попробовать его.

Код: Выделить всё

using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddSingleton();
builder.Services.AddHttpContextAccessor();

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
options.SlidingExpiration = true;
options.AccessDeniedPath = "/Forbidden/";
});

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthentication();
app.UseAuthorization(); ;

app.MapControllers();

using var scope = app.Services.CreateScope();
var httpContextAccessor = scope.ServiceProvider.GetRequiredService();

if (httpContextAccessor is not null)
{
httpContextAccessor.HttpContext ??= new DefaultHttpContext();
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Email, ClaimTypes.Role);
identity.AddClaims(new List
{
new(JwtRegisteredClaimNames.Sub, "JhonDoe"),
new(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new(JwtRegisteredClaimNames.Email, "jhon_doe@gmail.com")
});

var principal = new ClaimsPrincipal(identity);

var authProperties = new AuthenticationProperties
{
IsPersistent = true,
};

await httpContextAccessor!.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, authProperties);
}

app.Run();
При выполнении строки: httpContextAccessor!.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, Principal, authProperties); я получил следующее сообщение об ошибке:
Необработанное исключение. System.ArgumentNullException: значение не может быть нулевым. (Параметр «поставщик»)
в System.ThrowHelper.Throw(String paramName)
в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](поставщик IServiceProvider)
в Microsoft.AspNetCore. Authentication.AuthenticationHttpContextExtensions.GetAuthenticationService(контекст HttpContext)
в Microsoft.AspNetCore.Authentication.AuthenticationHttpContextExtensions.SignInAsync(контекст HttpContext, схема String, субъект ClaimsPrincipal, свойства AuthenticationProperties)
в Program.$(String[] args) в D:\Desktop\HttpContextTestApp\Program.cs:line 83
at Program.(String[] args)
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -cannot-be
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»