2016-12-16 4 views
0

OData Web API後アクションを定義しようとしました。パラメータは数値です。 ソースコードがあり、ここで、私はarticle を発見し、私が説明した記事のように続く:私は機能をテストするために郵便配達を使用ODataアクションパラメータが実行時にNULLである

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

ウェブ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

おかげエンティティは

  • デフォルトを設定します。非常に役に立ちます。ほんとうにありがとう! –

  • 関連する問題