从C#发布到WebApi2

时间:2016-09-16 14:53:09

标签: c# web-services post asp.net-web-api

我无法让我的生活得以实现。我一直得到404。

这是WebApi2代码:

[HttpPost]
    public IHttpActionResult Post(string testString)
    {
        if(!string.IsNullOrEmpty(testString))
        {
            return Ok(testString);
        }
        else
        {
            return BadRequest();
        }
    }

这是WebClient代码:

 public async Task PostingToWebServiceShouldWork()
    {
        var apiEndPoint = new Uri(String.Format("{0}/Paging", ConfigurationManager.AppSettings["ApiEndpoint"].ToString()));
        var apiRoot = new Uri(apiEndPoint.GetLeftPart(UriPartial.Authority));
        var apiCall = apiEndPoint.PathAndQuery.Substring(1, apiEndPoint.PathAndQuery.Length - 1);
        using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
        {
            client.BaseAddress = apiRoot;
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpContent content = new StringContent("testSTring");
            HttpResponseMessage response = await client.PostAsync(apiCall, content);

            if(response.IsSuccessStatusCode)
            {

            }
        }
    }

我只想将一个简单的字符串发布到Web服务。这应该是死的简单,它给了我一个偏头痛,哈哈。我已经尝试了所有我能想到的东西,而且我必须错过一些细节......

谢谢!

1 个答案:

答案 0 :(得分:1)

因为您的API端点只是一个字符串而不是一个对象,所以WebAPI正在寻找该字符串作为查询字符串参数。您有两种选择:

  1. 在动作的定义

    中使用[FromBody]属性
    public IHttpActionResult Post([FromBody] string testString)
    
  2. 在网址上而不是在正文中发送字符串(有效,但如果您通过HTTPS进行安全保护,则会显示您发布的内容)

  3. 有关更深入的解释和示例,请参阅http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api