2012-05-31 45 views
6

¿Alguien sabe si MVC 4 WebApi puede (o será) consumible en power-pivot?MVC 4 WebApi con PowerPivot?

+0

Web API puede proporcionar formato de OData alimenta en este punto, pero creo que el corazón de esta pregunta concreta es si Excel PowerPivot se conectará a ella. PowerPivot espera que algún tipo de lista de métodos esté disponible en Source URL cuando configura su conexión de alimentación. WCF Data Services proporciona este OOTB pero Web API no. –

Respuesta

2

Web API en sí no tiene una función de soporte para exponer los puntos finales en el formato OData. Estamos planeando agregar soporte OData a través de un complemento que se enviará en el futuro.

+1

¿Alguna idea de lo pronto que se enviará? Mientras tanto, ¿deberían utilizarse los servicios de datos WCF? –

+2

@ShaneCusson una versión de vista previa está disponible aquí: http://nuget.org/packages/Microsoft.AspNet.WebApi.OData/0.1.0-alpha-120815. Más discusión sobre las fechas aquí: http://aspnetwebstack.codeplex.com/discussions/391903 o aquí: http://aspnetwebstack.codeplex.com/discussions/359229. – marcind

1

Creo que si expone un IQueryable<T>, lo expone como un suministro OData.

Encontré esto.

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

+1

Según tengo entendido, exponer una interfaz IQueriable a través de un WebApi le permitirá utilizar la convención de OData URL para la composición de consultas, pero eso no necesariamente habilitará PowerPivot – cmilhench

+0

¿está hablando del eje de poder de excel o el bi one? –

0

Funciona bien en Excel 2013 como fuente de datos. En versiones anteriores, p. Excel 2010 hay una solución alternativa descrita aquí: http://aspnetwebstack.codeplex.com/workitem/820

Básicamente, la salida predeterminada es JSON y Excel no envió el encabezado Aceptar adecuado para recibir XML. Así que hay que añadir esto a la función Registro de puesta en marcha de su API Web:

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