C#: добавление пользовательских свойств в HttpContextAccessor - PullRequest
2 голосов
/ 30 апреля 2020

Есть ли способ добавить пользовательские свойства в HttpContextAccessor в C# Net Core?

Скажем, создайте новое свойство с именем: Favoritefood Property или CreatedByUser (исходя из специальной функции) и назначьте значение ? ниже приведен простой пример:

Мы хотим в конечном итоге перенести пользовательские свойства в слой DbContext, не только связанные с аудитом, и т. д. c.

public class AuditableDbContext: DbContext
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public AuditableDbContext(DbContextOptions<AuditableDbContext> options, IHttpContextAccessor httpContextAccessor)
        : base(options)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    private void ApplyCreatedBy()
    {
        var modifiedEntities = ChangeTracker.Entries<IFood>().Where(e => e.State == EntityState.Added);
        foreach (var entity in modifiedEntities)
        {
            entity.Property("Food").CurrentValue = GetFoodMethod();
        }
    }

    public override int SaveChanges()
    {
        ApplyCreatedBy();
        return base.SaveChanges();
    }

Ресурсы:

Записать имя пользователя и IP-адрес с пользовательскими свойствами в Application Insight. Net Core 2.1

Добавить пользовательские свойства пользователю ClaimsPrincipal в asp. net ядро ​​2

1 Ответ

3 голосов
/ 30 апреля 2020

Не уверен на 100%, как ваш пример связан с добавлением пользовательских вещей в контекст http. Но да, HttpContext имеет коллекцию элементов, которую вы можете использовать для хранения контекста, заданного c информацией о состоянии.

_httpContextAccessor.HttpContext.Items["key"] = "some random value";

Вы можете получить контекст через ContextAccessor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...