ASP .NET Webhook接收器

时间:2017-07-12 18:48:01

标签: c# asp.net json asp.net-web-api

我正在尝试创建一个Web应用程序,它将接收包含json的HTTP帖子。我现在要做的就是表明我可以收到请求。我首先创建了一个带有Web API模板的ASP .NET Web应用程序。我添加了一个控制器来接收帖子:

  public class PostmanController : Controller
{

    [System.Web.Mvc.HttpPost]
    public void Index([FromBody] string request)
    {

        // Create handler class object
        PostmanHandler test = new PostmanHandler();

        // Pass request to the convertjsontoobject method
        test.ConvertJsonToObject(request);

    }
}

正如您在此处所见,我还在Models文件夹中创建了一个处理程序:

public class PostmanHandler
{
 public void ConvertJsonToObject(string s)
    {
        // Deserialize JSON
        var newData = JsonConvert.DeserializeObject<testobject>(s);
    }
}

将JSON转换为我制作的类:

public class testobject
{
    public int id { get; set; }
    public string name { get; set; }
}

我正在尝试测试它以查看它是否有效但我在发送POST请求时得到了Postman的404响应。我将它发送到http://localhost:xxxx/api/Postman我认为遵循WebApiConfig文件中的路由说明:routeTemplate:&#34; api / {controller} / {id}&#34;

我是否遗漏了某种路由?

2 个答案:

答案 0 :(得分:0)

如果你真的使用Web API(而不是MVC),你的控制器应该是ApiController的子类(而不是Controller)。

更新:所以,你真的不需要自己处理JSON的反序列化。 Web API将为您做到这一点。您的请求&#34;参数不应该是&#34;字符串&#34;,它实际上应该是您尝试反序列化的类型

[HttpPost]
public void PostObject([FromBody]testobject request)
{

    // Your request object should be deserialized already.
}

答案 1 :(得分:0)

在您的网址中取出API并尝试http://localhost:xxxx/Postman。您的控制器PostmanController不是Web API(派生自Controller而非ApiController类),因此在这种情况下,/ api / {controller} / {id}的路由模板不正确。