2017-09-28 68 views
0

我試圖開發一個API,允許在同一地址獲取和發佈請求。nohttp資源被發現匹配請求uri

public class DataController : ApiController 
{ 

    [HttpGet] 
    public DataResponse Foo() 
    { 
    return GetNext(); 
    } 

    [HttpPost] 
    public void Foo(long p1, string p2) 
    { 
    SaveValue(p1,p2); 
    } 
} 

GET工作正常。當調用POST方法,我得到以下錯誤:

the requested resource does not support http method 'POST'

enter image description here

我WebApiConfig如下所示:

public static class WebApiConfig 
    { 
    public static void Register(HttpConfiguration config) 
    { 
     config.EnableCors(); 
     config.MapHttpAttributeRoutes(); 
     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 
     config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{action}"); 
    } 
    } 

任何想法,我需要改變,以得到這個工作?

回答

1

你可以這樣做兩種ways-

1-更改您調用API即的方式 - 在URL傳值一樣<url>?p1=value&p2=value

2-更改操作在Web API來

簽名
public void Foo([FromBody] MyContract data) 

其中MyContract是具有兩個屬性

public class MyContract 
{ 
    public long p1 { get; set; } 
    public string p2 { get; set; } 
} 
一類

這是因爲默認情況下,參數綁定是通過URL完成的,並且您通過body傳遞它們。

+0

非常感謝,Ipsit。奇蹟般有效 :-) –

相關問題