2016-12-16 3 views
0

Я пытался определить действие Post OData Web API. Параметр - это число. Я нашел article И я последовал как статья описываемом здесь исходный код:Параметры действия OData равны нулю во время выполнения

WebApiConfig.cs

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.MapODataServiceRoute("odata", "odata", model: GetModel()); 

    } 

    private static Microsoft.OData.Edm.IEdmModel GetModel() 
    { 
     ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); 

     builder.EntitySet<ThumbnailQueue>("ThumbnailQueues"); 
     builder.EntitySet<Document>("Documents"); 


     EntitySetConfiguration<ThumbnailQueue> thumbnailQueue = builder.EntitySet<ThumbnailQueue>("ThumbnailQueues"); 
     var action = thumbnailQueue.EntityType.Action("PostThumbnailQueue"); 
     action.Parameter<long>("DocumentSN"); 


     var postThumbnailQueue = thumbnailQueue.EntityType.Collection.Action("PostThumbnailQueue"); 
     postThumbnailQueue.Parameter<long>("DocumentSN"); 

     return builder.GetEdmModel(); 
    } 
} 

Web API

public class ThumbnailQueuesController : ODataController 
{ 
    private MarketingEntities db = new MarketingEntities(); 

    // POST: odata/ThumbnailQueues 
    [HttpPost] 
    public IHttpActionResult PostThumbnailQueue(ODataActionParameters parameters) 
    { 
     if (parameters == null) return BadRequest(); 

     var documentSN = (long)parameters["DocumentSN"]; 

     if (db.ThumbnailQueues.Any(t => t.DocumentSN == documentSN)) 
     { 
      return BadRequest("Record already exists"); 
     } 

     var myThumbnailQueue = new ThumbnailQueue(); 
     myThumbnailQueue.DocumentSN = documentSN; 
     myThumbnailQueue.Status = 1; 
     db.ThumbnailQueues.Add(myThumbnailQueue); 


     db.SaveChanges(); 

     return Ok(); 
    } 

Я использовал почтальона, чтобы проверить функцию

enter image description here

Но во время выполнения параметр имеет значение null, поэтому я не могу получить documentSN из параметра. Я исправляю эту проблему в течение нескольких часов, может ли кто-нибудь помочь мне решить эту проблему? Большое спасибо ~

ответ

0

Вы должны использовать следующий маршрут для этого: http://localhost:10076/odata/ThumbnailQueues/Default.PostThumbnailQueue

  • ThumbnailQueues - множество сущностей
  • - по умолчанию пространство имен
  • PostThumbnailQueue - действие
+0

Спасибо. Это очень полезно. Я очень ценю это! –

Смежные вопросы