none
Anonymous and Weakly-Typed Objects to JSON RRS feed

  • Pregunta

  • Hola, estoy jugando con algunos tutos haciendo una web API con mvc 4 .

    Estoy tratando hacer funcionar un action que serializa un objeto anonimo como se muestra en el siguiente link: 

    http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_anon

    // GET api/banner/LastVersion
    [HttpGet]
    public object LastVersion()
    {
        return new { version = 1234 };
    }

    En mi global tengo la siguiente configuración:

    protected void Application_Start()
    {
                AreaRegistration.RegisterAllAreas();
    
                WebApiConfig.Register(GlobalConfiguration.Configuration);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
                var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
                json.UseDataContractJsonSerializer = true;
                json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
                json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    }

    Cuando hago un get a la ruta " http://localhost:57637/api/Banner/LastVersion "

    Me devuelve el siguiente error

    <ExceptionMessage>
        The 'ObjectContent`1' type failed to serialize the response body for content type 'application\/json; charset=utf-8'.
    </ExceptionMessage>
    <ExceptionType>
        System.InvalidOperationException
    </ExceptionType>
    <InnerException>
        <Message>
            An error has occurred.
        </Message>
        <ExceptionMessage>
            El tipo '&lt;&gt;f__AnonymousType1`1[System.Int32]' no se puede serializar. Intente marcarlo con el atributo DataContractAttribute y marque todos los miembros que desee serializar con el atributo DataMemberAttribute. Si el tipo es una colección, pruebe a marcarlo con CollectionDataContractAttribute. Vea la documentación de Microsoft .NET Framework para conocer otros tipos admitidos.
        </ExceptionMessage>
        <ExceptionType>
            System.Runtime.Serialization.InvalidDataContractException
        </ExceptionType>
    </InnerException>

    Entiendo que no está tomando la serialización para un tipo object pero no el por qué. Si alguno me da una idea se lo agradecería.

    lunes, 23 de mayo de 2016 20:18

Todas las respuestas