2017-09-28 37 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。奇迹般有效 :-) –

相关问题