C# 属性路由和CreatedAtRoute
我正在尝试将我的Web Api项目转换为使用属性路由。我不理解的一件事是POST请求的CreatedAtRoute方法。在我的WebApiConfig.cs中,我曾经有一个C# 属性路由和CreatedAtRoute,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,我正在尝试将我的Web Api项目转换为使用属性路由。我不理解的一件事是POST请求的CreatedAtRoute方法。在我的WebApiConfig.cs中,我曾经有一个 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/account/{accountId}/site/{siteId}/visitor/{visitorId}/session/{sessionI
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/account/{accountId}/site/{siteId}/visitor/{visitorId}/session/{sessionId}/{controller}/{action}",
defaults: new { action = RouteParameter.Optional }
);
我把它注释掉了,认为它不再需要了,但是想要路线的名称,却找不到它。那么,属性路由是如何处理的呢?好的……一旦你看到发生了什么,这就很容易了。在属性路由中,必须指定要检索资源的路由的名称。因此,在我的GET操作中,它看起来是这样的:
[Route("{sessionId}",Name="GetSession")]
[ResponseType(typeof(Session))]
public async Task<IHttpActionResult> Get(HttpRequestMessage request, int accountId, int siteId, Guid visitorId, Guid sessionId)
为此:
return CreatedAtRoute("GetSession", new
{
visitorId = session.VisitorId,
sessionId = session.SessionId
}, session);
return CreatedAtRoute("GetSession", new
{
visitorId = session.VisitorId,
sessionId = session.SessionId
}, session);