2014-09-22 66 views
1

我寫的WebAPI項目,並正在收到錯誤沒有行動上的控制器「門票」這個名字「TestMethod的」每當我找到匹配嘗試控制器中的任何方法。在以下控制器的行動沒有行動上的控制器「門票」,該名稱匹配找到「CloseTicket」

沒有正常工作。

我一直在谷歌上搜索,並已經建立WebApiConfig.cs添加行動路由。

是否還有其他我缺少的東西。同時選擇行動

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional }); 

     config.EnableSystemDiagnosticsTracing(); 
    } 
} 

控制器

public class TicketController : ApiController 
{ 
    [HttpPost] 
    public static ServiceResponse<string> IssueTicket([FromBody]ServiceRequest<TicketRequest> request) 
    {    
     return ServiceResponse<string>.WithPayload(ticketID); 
    } 

    [HttpPost] 
    public static ServiceResponse<bool> CheckTicketExist([FromBody]ServiceRequest<string> request) 
    {    
     return ServiceResponse<bool>.WithPayload(doesExist); 
    } 

    [HttpPost] 
    public static ServiceResponse<bool> CloseTicket([FromBody]ServiceRequest<string> request) 
    { 
     return ServiceResponse<bool>.WithPayload(result); 
    } 

    [HttpPost] 
    public static bool TestMethod([FromBody]string test) 
    { 
     return true; 
    } 
} 
+0

@ ValutBoy14當你得到這個錯誤時,你的URL是什麼樣的? – Gjohn 2014-09-22 14:00:34

+0

您可以使用屬性路由來清除事情。你也必須確保你使用HttpPost屬性的System.Web.Http命名空間。 – NMK 2014-09-22 14:01:25

+0

您使用什麼網址來獲取「未找到操作」錯誤?爲什麼你的所有行爲都有「靜態」?表單發佈url必須是yoursite.tld/api/ticket/IssueTicket – joym8 2014-09-22 14:05:37

回答

3

的Web API不考慮靜態方法。

Reference

,控制器上的方法被認爲是 「行動」?在選擇動作時,框架只查看控制器上的公共實例方法。

從控制器中刪除static關鍵字。

相關問題