0

我在 WEBUI 控制器中有一个 GetCustomerDetails 方法(下)

public bool GetCustomerDetails(string customer)
        {
            Uri CustUri = null;
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://online/");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var response = client.PostAsJsonAsync("api/customers/", customer).Result;

            if (response.IsSuccessStatusCode)
            {
                CustUri = response.Headers.Location;
            }
            return false;
}

the above method has to hit the below method(API controller). 


 public string PostCustomer(string customerJsonString)
        {
            CustomerDetailDto customer = JsonConvert.DeserializeObject<CustomerDetailDto>(customerJsonString);
            bool res = _customerService.SaveOrUpdateCustomer(customer);
        if (res)
                  {
            ....
          }
   return something;
            }

但作为回应(上面的WEBUI)我收到错误消息

{StatusCode:405,ReasonPhrase:'方法不允许',版本:1.1,内容:System.Net.Http.StreamContent,标头:{ Pragma:无缓存连接:关闭缓存控制:无缓存日期:星期三,17 2013 年 7 月 12:17:49 GMT 服务器:ASP.NET 服务器:开发服务器:Server/11.0.0.0 X-AspNet-Version:4.0.30319 Content-Length:73
Content-Type:application/json;charset=utf-8 过期:-1 }}

所以任何机构都可以帮助我解决这个问题。

4

1 回答 1

1

很抱歉回答您的问题为时已晚,希望您的解决方案已经实施。我发布此解决方案是为了帮助遇到相同情况的其他人。

API 控制器方法 PostCustomer必须包含一个 Allow 标头,该标头包含有效方法列表。所以我们有下面的实现。

[System.Web.Http.HttpPost]
public string PostCustomer(string customerJsonString)
    {
        CustomerDetailDto customer = JsonConvert.DeserializeObject<CustomerDetailDto>(customerJsonString);
        bool res = _customerService.SaveOrUpdateCustomer(customer);
    if (res)
              {
        ....
      }
return something;
        }

因此,添加 HttpPost 标头将帮助您的 WebUI 控制器与上述方法对话。

谢谢,尼拉吉

于 2013-12-18T11:42:27.100 回答