2013-07-19 7 views
5

sto lavorando con MVC 4 e ho questo semplice ValueProvider dummy:Impossibile aggiungere ValueProviderFactory di API Web

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; 
     } 
    } 
} 

e il mio problema risiede quando provo a registrarlo di fabbrica nella API Web:

config.Services.Add(typeof(ValueProviderFactory), new DummyValueProviderFactory()); 

Compila OK, ma all'avvio del server, ricevo un ArgumentException che mi dice The service type ValueProviderFactory is not supported.

Ho letto this tutorial e this other one ed entrambi mi stanno dicendo che dovrebbe funzionare correttamente. Che cosa sto facendo di sbagliato?

risposta

4

Assicurarsi di fare riferimento a ValueProviderFactory nello spazio dei nomi dell'API Web ASP.NET e non a quello dello spazio dei nomi MVC. Entrambi hanno lo stesso nome di classe, ma sono in spazi dei nomi diversi.

+1

Inchiodato! Grazie! Stava facendo riferimento 'System.Web.Mvc.ValueProviderFactory', non' System.Web.Http.ValueProviders.ValueProviderFactory', che è quello corretto. –