Есть ли способ заменить MvcNewtonsoftJsonOptions для каждого запроса?
Как зарегистрировать MvcNewtonsoftJsonOptions:
private static void AddJsonFormatterServices(IServiceCollection services) {
services.TryAddEnumerable(ServiceDescriptor.Transient<IConfigureOptions<MvcNewtonsoftJsonOptions>, OurMvcJsonOptions>());
}
// This needs to replaced somehow for every request.
В OurMvcJsonOptions Я регистрирую JSonConverters. Эта служба читает все json преобразователи и добавляет их в параметры преобразователей JSONSerializer.
Проблема: Проблема заключается в том, что один из преобразователей использует интерфейс, разрешенный из DI на запрос и так как теперь это глобальная область действия, он разрешит компонент из глобальной области. Теперь, когда запрос получен, он все еще использует компонент из глобального контекста, который не содержит требуемой информации.
Я уже пробовал IResourceFilter и IContractResolver. Я думаю, что проблема похожа на ту, о которой упоминается здесь , но я не мог понять ее, используя упомянутые там решения.
Существует также аналогичный вопрос здесь но это не решило мою проблему, так как форматеры в последней версии были удалены.
Чтобы подвести итог проблемы, MVC регистрирует MvcNewtonsoftJsonOptions как одиночный, в то время как мне нужно, чтобы он создавался для каждого запроса, чтобы у меня был правильный JsonConverter для значений в запросе.