繁体   English   中英

在ASP.NET Web API 2中添加自定义模型元数据提供程序

[英]Adding custom model metadata provider in asp.net web api 2

我正在尝试在Web API 2中注册自定义模型元数据提供程序。
正如此页面所述 ,我应该打电话

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

但是与此同时我得到以下错误

不支持服务类型ModelMetadataProvider。 参数名称:serviceType

这次聚会晚了一点,但是HttpConfiguration附带的DefaultServices集合在内部附加了两组服务:Multiple(可以注册多个实现)和Single(只能具有单个实现)。

ModelMetadataProvider是一种服务类型,只能注册一个实现。 调用Add尝试向已有的实现添加其他实现,因此请调用Replace。

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

您可以通过在依赖解析器容器中注册替换服务来覆盖ModelDataProvider。 然后,Web API将使用它代替默认的DataAnnotationsModelMetadataProvider。

但是,您在自定义元数据提供程序中只能做些限制。 元数据的缓存对于大多数应用程序的性能至关重要,并且ModelMetadata的基本实现具有标记成员,这些成员对于缓存至关重要,如INTERNAL。 Microsoft似乎不打算自定义此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM