【发布时间】:2021-01-12 20:55:35
【问题描述】:
一旦我尝试调用 Web API 控制器方法,我就会收到此错误,
Cannot send a content-body with this verb-type.
我的详细信息控制器如下,
[HttpGet("requestDetails/Details")]
public IActionResult GetDetails([FromHeader] int tenantId,[FromBody]ParamterDTO pdto)
{
try
{
var details = Service.GetDetials(pdto.FromDate, pdto.SearchText, pdto.UserId);
return Ok(details);
}
catch (Exception)
{
return StatusCode(500);
}
}
这就是我使用 Details 控制器方法的方式。
public string GetDetails(string fromDate, string searchText, string userID) {
try {
string serviceUrl = "http://localhost/Testapi/api/details/requestDetails/Details";
string jsonParamterData = new JavaScriptSerializer().Serialize(new {
FromDate = fromDate,
SearchText = searchText,
UserId = userID
});
HttpClient client = new HttpClient();
HttpMethod method = new HttpMethod("GET");
HttpRequestMessage message = new HttpRequestMessage(method, serviceUrl);
StringContent content = new StringContent(jsonParamterData, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("TenantId", tenantId.ToString());
client.DefaultRequestHeaders.Add("Authorization", string.Format("bearer {0}", token));
message.Content = content;
var response = client.SendAsync(message).Result;
client.Dispose();
return response.Content.ToString();
} catch (Exception ex) {
NameValueCollection logParams = new NameValueCollection();
Logger.LogErrorEvent(ex, logParams);
throw;
}
}
谁能解释一下,我在这里做错了什么。
更新:
我使用 post 而不是通过更改代码来获取,
HttpMethod method = new HttpMethod("POST");
HttpRequestMessage message = new HttpRequestMessage(method, serviceUrl);
StringContent content = new StringContent(jsonParamterData, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("TenantId", tenantId.ToString());
client.DefaultRequestHeaders.Add("Authorization", string.Format("bearer {0}", token));
message.Content = content;
//var response = client.GetStringAsync(message.).Result;
var response = client.SendAsync(message);
但响应结果如下,
【问题讨论】:
-
你必须使用“帖子”
-
@CasparKleijne 这是访问响应数据的正确方法吗?
var response = client.SendAsync(message).Result; client.Dispose(); return response.Content.ToString(); -
@CasparKleijne 我使用了 post 并且它击中了控制器方法。但是api返回的数据不能访问。
var response值显示为statusCode 200 ReasonPharse 'ok' -
你需要inttenantId做什么?没用?
标签: c# .net asp.net-web-api get