簡體   English   中英

如何在Web API 2中的具有相同參數的get方法中使用屬性路由

[英]How to use attribute routing in for get method with same parameter in web api 2

以下是調用Web API調用的代碼

public async System.Threading.Tasks.Task<ActionResult> RequisitionNameByQuantityThisDraw()
{
    //Guid applicationRequisitionOid

    string userName = string.Empty;
    SessionObject sessionData = new SessionObject().GetSessionData();
    if (sessionData == null)
    {
        return RedirectToAction("UserLogin", "Login");
    }
    Guid aa = new Guid("41CF8843-2AF4-40D0-9998-D6D516367A7D");
    HttpResponseMessage response = _HttpClient.GetAsync("api/ApplicationSIRMeasure/RequisitionNameByQuantity?applicationRequisitionOid=" + aa).Result;

    string userJsonString = await response.Content.ReadAsStringAsync();
    return Json(userJsonString, JsonRequestBehavior.AllowGet);
}

以下是Web API方法

public HttpResponseMessage Get(Guid applicationRequisitionOid)
{
    var result = _IService.GetAll(applicationRequisitionOid);
    if (result == null)
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No data found");
    else
        return Request.CreateResponse(HttpStatusCode.OK, result);
}   

[Route("api/ApplicationSIRMeasure/RequisitionNameByQuantity/{applicationRequisitionOid:Guid}")]
public HttpResponseMessage RequisitionNameByQuantity(Guid applicationRequisitionOid)
{
    Guid id = new Guid("41CF8843-2AF4-40D0-9998-D6D516367A7D");
    var result = _IService.GetRequisitionByQunatityThisDraw(id);
    if (result == null)
        return Request.CreateErrorResponse(HttpStatusCode.NotFound, "No data found");
    else
        return Request.CreateResponse(HttpStatusCode.OK, result);
}

每當我用上面的代碼調用此Web API時,它都會轉到第一個get方法。 但我不會調用第二種方法

Web API上的路由為

[Route("api/ApplicationSIRMeasure/RequisitionNameByQuantity/{applicationRequisitionOid:guid}")]

但是請求正在呼叫

"api/ApplicationSIRMeasure/RequisitionNameByQuantity?applicationRequisitionOid="

由於網址與第二個路由模板不匹配,因此它在另一個操作上找到了匹配項,因為查詢字符串參數匹配。

您需要更新所調用的URL,以匹配目標操作的路由模板。

var aa = new Guid("41CF8843-2AF4-40D0-9998-D6D516367A7D");
var url = string.Format("api/ApplicationSIRMeasure/RequisitionNameByQuantity/{0}", aa);
var response = await _HttpClient.GetAsync(url);

我真的不認為有必要創建Guid時,你可以建立URL與用於創建相同的字符串Guid實例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM