134 messaggi dal 31 ottobre 2003
Non riesco ad utilizzare ODataRouteAttribute.

Ho eseguito i seguenti passi:

1) Ho creato un progetto asp net web api
2) Ho installato Microsoft.AspNet.Odata
3) Ho creato l'identità Person
4) Nel metodo Register del WebApiConfig ho scritto:
namespace Web

{

    using System.Web.Http;

    using System.Web.Http.Cors;

    using System.Web.OData.Builder;

    using System.Web.OData.Extensions;



    using Newtonsoft.Json;

    using Newtonsoft.Json.Serialization;



    public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {



            ODataModelBuilder builder = new ODataConventionModelBuilder();



            builder.EntitySet<Person>("Peoples");



            config.MapODataServiceRoute(

                routeName: "ODataRoute",

                routePrefix: "odata",

                model: builder.GetEdmModel());

        }

    }

}


Ho creato il controller:

namespace Web

{

    using System.Collections.Generic;

    using System.Linq;

    using System.Web.Http;

    using System.Web.OData;

    using System.Web.OData.Query;

    using System.Web.OData.Routing;



    [ODataRoutePrefix("Peoples")]

    public class xxController : ODataController

    {

        [ODataRoute("({IdPerson})")]

        [EnableQuery]

        public IHttpActionResult Get([FromODataUri] Int IdPerson)

        {
            ..........
        }



        [ODataRoute]

        [EnableQuery()]

        public IHttpActionResult  Get()

        {

             .....
        }

    }

}



Ora se digito: http://localhost:port/odata/Peoples viene intercettato il metodo correttamente
se invece digito http://localhost:port/odata/Peoples(1) ottengo un errore 404 not found, dove sbaglio?
Modificato da Jk il 14 febbraio 2017 16.41 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
prova con questa action, vedi se così funziona.

[EnableQuery]
public IHttpActionResult Get([FromODataUri] Int key)
{
  ..........
}


Usa "People" come plurale di Person.

ciao,
Moreno

Enjoy learning and just keep making
134 messaggi dal 31 ottobre 2003
Ciao, avevo già provato con key, e ho anche usato il singolare. Ho provato a mappare <Person> con Person. Non riesco a uscirne fuori. ma in generale i passaggi che ho fatto per usare ODataRoute sono corretti ?

Grazie
134 messaggi dal 31 ottobre 2003
Ciao, forse ho capito il problema. Io le chiamate di prova le sto facendo direttamente inserendo l'URL sul Browser. Ora ho scaricato un progetto di esempio di Microsoft in cui le chiamate vengono fatte con Jquery. Ho visto che prendendo una chiamathttp://localhost:44221/OData/Movies(1)/ODataActionSample.Models.CheckOuta di esempio viene intercettata correttamente dal controllor, mentre ottengo un errore se la metto direttamente sul browser.

JK

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.