1

我刚开始学习WebAPI,

当我试图调用我的 Api/TeststerFunction 并将数据参数作为 JSON ( {"Test":"TEST"} ) 发送时,我得到了这个响应"No HTTP resource was found that match the request"

但是,当尝试调用它并将数据作为查询字符串(http://localhost/myProject/myApi/TesterFunction?Test="TEST ")发送时,它可以工作并完成。

[HttpPost]
[Route("TesterFunction")]
public HttpResponseMessage TesterFunction(string Test)
{
    try
    {
        myClass myObject= new myClass();

        if (myObject.myStordProcedure(CompanyCode))
        {
            return Request.CreateResponse(HttpStatusCode.OK, "Done");
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest, "SP not executed");
        }
    }
    catch(Exception e)
    {
        return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e);
    }

} 
4

1 回答 1

0

这不起作用,因为您的 web api 方法只接受字符串参数。

你能做的是;

  1. 添加一个将绑定属性的类
public class ReceiveModel{
   public string Test {get;set;}
}
  1. 然后替换您的 web api 方法以使用 ReceiveModel 参数。
[HttpPost]
[Route("TesterFunction")]
public HttpResponseMessage TesterFunction(ReceiveModel model)
{
    // see the property here
    Console.WriteLine(model.Test);

    try
    {
        myClass myObject= new myClass();

        if (myObject.myStordProcedure(CompanyCode))
        {
            return Request.CreateResponse(HttpStatusCode.OK, "Done");
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest, "SP not executed");
        }
    }
    catch(Exception e)
    {
        return Request.CreateErrorResponse(HttpStatusCode.BadRequest, e);
    }

}
于 2020-03-27T18:38:27.350 回答