2012-05-31 22 views
6

Qualcuno sa se MVC 4 WebApi può (o sarà) consumabile in power-pivot?MVC 4 WebApi con PowerPivot?

+0

Web API in grado di fornire in formato OData alimenta a questo punto, ma credo che il cuore di questa specifica domanda è se Excel PowerPivot si collegherà ad esso. PowerPivot si aspetta che un qualche tipo di elenco di metodi sia disponibile all'URL di origine quando si imposta la connessione del feed. WCF Data Services fornisce questo OOTB ma l'API Web non lo fa. –

risposta

2

Web API per sé non dispone di un supporto incorporato per esporre gli endpoint nel formato OData. Stiamo pianificando di aggiungere il supporto OData tramite un componente aggiuntivo che verrà distribuito in futuro.

+1

Qualche idea di quanto presto verrà spedito? Nel frattempo, dovrebbero essere utilizzati i servizi dati WCF? –

+2

@ShaneCusson una versione di anteprima è disponibile qui: http://nuget.org/packages/Microsoft.AspNet.WebApi.OData/0.1.0-alpha-120815. Ulteriori discussioni sulle date qui: http://aspnetwebstack.codeplex.com/discussions/391903 o qui: http://aspnetwebstack.codeplex.com/discussions/359229. – marcind

1

Penso che se esporti un IQueryable<T>, lo espone come un feed OData.

Ho trovato questo.

http://codebetter.com/johnvpetersen/2012/03/22/bringing-odata-to-your-webapi-just-use-iqueryable/

+1

La mia comprensione è che l'esposizione di un'interfaccia IQueriable tramite un WebApi consentirà di utilizzare le convenzioni URL OData per la composizione delle query, ma che non necessariamente abiliterà PowerPivot – cmilhench

+0

stai parlando del pivot di potenza di Excel o di quello bi? –

0

Funziona perfettamente in Excel 2013 come origine dati. Nelle versioni precedenti, ad es. Excel 2010 è una soluzione qui descritta: http://aspnetwebstack.codeplex.com/workitem/820

In pratica, l'output predefinito è JSON ed Excel non ha inviato l'intestazione Accept appropriata per ricevere XML. Quindi bisogna aggiungere questo alla funzione Register start-up il Web API:

IList<ODataMediaTypeFormatter> odataFormatters 
            = ODataMediaTypeFormatters.Create(); 
var jsonFormatter = odataFormatters 
     .First(f => f.SupportedMediaTypes 
        .Contains(MediaTypeHeaderValue.Parse("application/json"))); 
odataFormatters.Remove(jsonFormatter); 
odataFormatters.Add(jsonFormatter); 
config.Formatters.InsertRange(0, odataFormatters); 
Problemi correlati