Добавление собственного поставщика метаданных модели в asp.net web api 2

1

Я пытаюсь зарегистрировать поставщика метаданных пользовательской модели в веб-api 2.
поскольку эта страница говорит, что я должен позвонить

config.Services.Add(typeof (ModelMetadataProvider), new CustomModelMetadataProvider());

но с этим я получаю следующую ошибку

Тип сервиса ModelMetadataProvider не поддерживается. Имя параметра: serviceType

Теги:
asp.net-web-api2

2 ответа

1

Немного поздно для вечеринки, но коллекция DefaultServices, привязанная к HttpConfiguration, имеет два набора подключенных к ней сервисов, Multiple (который может иметь несколько зарегистрированных реализаций) и Single (который может иметь только одну реализацию).

ModelMetadataProvider - это тип сервиса, в котором может быть зарегистрирована только одна реализация. Вызов Add пытается добавить дополнительную реализацию к уже существующему, поэтому вместо этого вызовите Replace.

config.Services.Replace(typeof(ModelMetadataProvider), new CustomModelMetadataProvider());
0

Вы можете переопределить ModelDataProvider, зарегистрировав службу замены в контейнере-контейнере зависимостей. Затем Web API будет использовать это вместо стандартного DataAnnotationsModelMetadataProvider.

Однако вы ограничены тем, что вы можете сделать в пользовательском поставщике метаданных. Кэширование метаданных важно для производительности в большинстве приложений, а базовая реализация ModelMetadata имеет отмеченные члены, которые жизненно важны для кэширования, как INTERNAL. Похоже, что Microsoft не намерена настраивать эту функциональность.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню