【发布时间】:2015-07-29 19:42:06
【问题描述】:
"message": "未找到与请求 URI 'http://localhost:64221/api/companies/lncr/Orders/00029303_070/Lines/6' 匹配的 HTTP 资源。",
"messageDetail": "在控制器 'PurchLines' 上找不到与请求匹配的操作。"
[RoutePrefix("api/companies/{compId}/Orders/{orderId}/Lines")]
public class PurchLinesController : BaseApiController
{
public PurchLinesController(IPortalReposotry repo)
: base(repo)
{
}
[Route("")]
public HttpResponseMessage Get(String compId, String orderId, int levelOfDetails = 1)
{
IQueryable<PurchLine> query;
if (levelOfDetails == 1)
{
query = PortalReposotry.GetPurchasLines(compId, orderId);
}
else
{
query = PortalReposotry.GetPurchasLinesWithApprovalHist(compId, orderId);
}
if (query.Count() == 0)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
var results = query.ToList()
.Select(v => this.ModelFactory.Create(v));
return Request.CreateResponse(HttpStatusCode.OK, results);
}
[Route("{lineId:double}" , Name="line")]
public HttpResponseMessage Get(String compId, String purchId, double lineId, int levelOfDetails = 1)
{
PurchLine results;
if (levelOfDetails == 1)
{
results = PortalReposotry.GetPurchasLine(compId, purchId, lineId);
}
else
{
results = PortalReposotry.GetPurchasLineWithApprovalHist(compId, purchId, lineId);
}
if (results == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.OK, ModelFactory.Create(results));
}
}
该请求应与第二个 Get 请求匹配。
api/companies/{compId}/Orders/{orderId}/Lines/{lineId}
http://localhost:64221/api/companies/lncr/Orders/00029303_070/Lines/6
lineId是double类型,我也试过 http://localhost:64221/api/companies/lncr/Orders/00029303_070/Lines/6.0/
但这也不起作用,所以我对自己做错了什么感到不知所措。
【问题讨论】:
标签: asp.net-mvc asp.net-web-api-routing