2013-06-19 38 views
0

需要幫助。WEB API。找到多個匹配請求的動作

我有2個控制器:

// POST (Single SMS) 
[ActionName("AddSMS")] 
public HttpResponseMessage Post(MySMS singleSMS) 
{ 
    try 
    { 
     SMS_Repository.Add(singleSMS); 
     return Request.CreateResponse<MySMS>(HttpStatusCode.Created, singleSMS); 
    } 
    catch (Exception) 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Error"); 
    } 
} 

// POST (Collection of SMSes) 
[ActionName("AddSMSCollection")] 
public HttpResponseMessage Post(List<MySMS> smses) 
{ 
    try 
    { 
     SMS_Repository.Add(smses); 
     return Request.CreateResponse<List<MySMS>>(HttpStatusCode.Created, smses); 
    } 
    catch (Exception) 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "errorus"); 
    } 
} 

和路線:

config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{action}/{id}", 
     defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional } 

現在。如果我發送的請求是這樣的:

本地主機:25856/API/SMS/AddSMSCollection

它的工作原理

是否有可能調整路線,以便我可以使用本地主機:25856/API /短信並沒有得到多個行動被發現匹配的請求錯誤?

對不起我的英文不好..

回答

1

你可以定義應該在這種情況下要執行的動作:

defaults: new { id = RouteParameter.Optional, action = "AddSMS" } 

,但只有在以下網址localhost:25856/api/sms,不包括操作名稱,我希望您認識到路由引擎無法消除要執行的操作。路由引擎可以使用HTTP動詞,但在你的情況下,這兩個動作都是POST。

+0

達林,你的榜樣是行不通的。當我使用localhost:25856/api /短信提琴手返回417 –

+0

它的工作如果請求正文是MySMS singleSMS,但如果我發送集合 - 我得到417 –

相關問題