2015-01-23 17 views
9

Web Api projemi öznitelik yönlendirme kullanacak şekilde dönüştürmeye çalışıyorum. Anlamadığım bir şey, bir POST isteği için CreatedAtRoute yöntemidir. Benim WebApiConfig.cs ben bunu artık ihtiyaç düşünerek bunu yorumladı birÖznitelik Yönlendirme ve OluşturmaAtRoute

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/account/{accountId}/site/{siteId}/visitor/{visitorId}/session/{sessionId}/{controller}/{action}", 
      defaults: new { action = RouteParameter.Optional } 
     ); 

için kullanılan, ancak CreatedAtRoute güzergahın adını istiyor ve onu bulamıyorum. Peki bu özellik yönlendirme ile nasıl ele alınır?

cevap

25

Tamam ... neler olduğunu gördükten sonra bu kolaydı. Öznitelik yönlendirmesinde, kaynağı almak için Güzergahın Adını belirtmeniz gerekir.

[Route("{sessionId}",Name="GetSession")] 
    [ResponseType(typeof(Session))] 
    public async Task<IHttpActionResult> Get(HttpRequestMessage request, int accountId, int siteId, Guid visitorId, Guid sessionId) 

Ve sonra POST eylem değişikliği CreatedAtRoute dan:

return CreatedAtRoute("DefaultApi", new 
     { 
      controller: "session" 
      visitorId = session.VisitorId, 
      sessionId = session.SessionId 
     }, session); 

Bu Kime: Yani benim GET eylemi şöyle görünür

return CreatedAtRoute("GetSession", new 
     { 
      visitorId = session.VisitorId, 
      sessionId = session.SessionId 
     }, session);