Вы можете добавить сервис IHttpContextAccessor
в конструктор вашего конвертера.
Что-то вроде следующего:
public class MyJsonConverter : JsonConverter
{
private readonly IHttpContextAccessor httpContextAccessor;
public MyJsonConverter(IHttpContextAccessor httpContextAccessor)
{
this.httpContextAccessor = httpContextAccessor;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var context = httpContextAccessor.HttpContext;
//...
}
//...
}
Затем вы можете передать сервис HttpContextAccessor
при регистрации конвертера вConfigureServices
в Startup.cs
var httpContextAccessor = new HttpContextAccessor();
services.AddSingleton<IHttpContextAccessor>(httpContextAccessor);
services.AddJsonOptions(options => {
options.SerializerSettings.Converters.Add(new MyJsonConverter(httpContextAccessor));
});
Обратите внимание, что вам не следует пытаться получить доступ к HttpContext
в конструкторе преобразователя.Получите доступ к нему с помощью метода записи или чтения, так как он, скорее всего, будет вызван во время запроса, когда контекст уже был заполнен.