Web API发布方法无效

时间:2016-10-20 06:07:59

标签: api asp.net-web-api

我有一个webapi控制器,以下是post方法。

   public HttpResponseMessage Register(string email, string password)
   {

   }

如何从浏览器进行测试?

当我使用以下内容从浏览器测试它时,它没有击中控制器。

http://localhost:50435/api/SignUp/?email=sini@gmail.com&password=sini@1234

它给了我以下错误。

  

无法将多个参数(' id'和#39;密码')绑定到请求中   内容。

你能帮我吗???

1 个答案:

答案 0 :(得分:0)

您收到错误,因为您无法以这种方式将多个参数传递给WebApi。

第一个选项:
您可以通过以下方式创建一个类并从body传递数据:

public class Foo
{
    public string email {get;set;}
    public string password {get;set;}
}

public HttpResponseMessage Register([FromBody] Foo foo) 
{
    //do something
    return Ok();
}

第二个选项:

public HttpResponseMessage Register([FromBody]dynamic value)
{
    string email= value.email.ToString();
    string password = value.password.ToString();
}

以这种方式传递json数据:

{
  "email":"abc@test.com",
  "password":"123@123"
}

<强>更新

如果您想从URL获取数据,则可以使用属性路由。

[Route("api/{controller}/{email}/{password}")]
public HttpResponseMessage Register(string email, string password) 
{
    //do something
    return Ok();
}

注意:
网址应为:http://localhost:50435/api/SignUp/sini@gmail.com/sini@1234
别忘了在WebApiConfig中启用属性路由 如果您使用这种方式,则会出现安全问题。