无法将ValueProviderFactory添加到Web API

Luc*_*iva 5 asp.net asp.net-mvc-4 asp.net-web-api

我正在使用MVC 4,我有这个简单的虚拟ValueProvider:

class DummyValueProviderFactory : ValueProviderFactory
{
    public override IValueProvider GetValueProvider(ControllerContext controllerContext)
    {
        return new DummyValueProvider();
    }

    private class DummyValueProvider : IValueProvider
    {
        public DummyValueProvider()
        {
        }

        public bool ContainsPrefix(string prefix)
        {
            return true;
        }

        public ValueProviderResult GetValue(string key)
        {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在Web API中注册它的工厂时,我的问题就出现了:

config.Services.Add(typeof(ValueProviderFactory), new DummyValueProviderFactory());
Run Code Online (Sandbox Code Playgroud)

它编译好,但是当服务器启动时,我得到一个ArgumentException告诉我The service type ValueProviderFactory is not supported.

我已经阅读了本教程另外一篇,并且两者都告诉我它应该可以正常工作.我究竟做错了什么?

Pab*_*aro 4

确保您引用的是 ASP.NET Web API 命名空间中的 ValueProviderFactory,而不是 MVC 命名空间中的 ValueProviderFactory。它们都有相同的类名,但位于不同的命名空间中。