Trying to migrate from OData v3 to OData v4 . Why am I trying to use 404 when I try to use the OData functions strong>?
Web API Configuration:
ODataModelBuilder builder = new ODataConventionModelBuilder(); //etc builder.EntitySet<LocalizableString>("LocalizableStringApi"); //etc var getComparitiveTableFunction = builder.EntityType<LocalizableString>().Collection.Function("GetComparitiveTable"); getComparitiveTableFunction.Parameter<string>("cultureCode"); getComparitiveTableFunction.ReturnsCollection<ComparitiveLocalizableString>(); //etc config.MapODataServiceRoute("OData_Kore_CMS", "odata/kore/cms", builder.GetEdmModel());
C # code:
[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)] [HttpGet] //[ODataRoute("Default.GetComparitiveTable(cultureCode={cultureCode})")] // Tried this, but gets errors and I noticed the function is in the OData model anyway without this, so should be fine. public virtual IHttpActionResult GetComparitiveTable([FromODataUri] string cultureCode) { // Implementation return Ok(query); }
XML Return from Metadata:
<Schema Namespace="Default"> <Function Name="GetComparitiveTable" IsBound="true"> <Parameter Name="bindingParameter" Type="Collection(Kore.Localization.Domain.LocalizableString)"/> <Parameter Name="cultureCode" Type="Edm.String" Unicode="false"/> <ReturnType Type="Collection(Kore.Localization.Models.ComparitiveLocalizableString)"/> </Function> ...
As you can see, this is in the schema of the / OData model ... but the following query does not work:
http://localhost:30863/odata/kore/cms/LocalizableStringApi/Default.GetComparitiveTable(cultureCode='en-US')
I also tried the following:
http://localhost:30863/odata/kore/cms/LocalizableStringApi/GetComparitiveTable(cultureCode='en-US') http://localhost:30863/odata/kore/cms/Default.GetComparitiveTable(cultureCode='en-US') http://localhost:30863/odata/kore/cms/GetComparitiveTable(cultureCode='en-US')
All of the above leads to 404 .
So ... what am I doing wrong here?
source share