我在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:'Method Not Allowed',版本:1.1, 内容:System.Net.Http.StreamContent,Headers:{Pragma:no-cache 连接:关闭缓存控制:无缓存日期:2013年7月17日星期三 12:17:49 GMT服务器:ASP.NET服务器:开发服务器: Server / 11.0.0.0 X-AspNet-Version:4.0.30319内容长度:73
Content-Type:application / json; charset = utf-8到期:-1}}
所以任何机构都可以帮助我解决问题。
答案 0 :(得分: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 Controller与上述方法进行对话。
谢谢, Neeraj