我正在调用我编写的Web API。我正在解决双方的错误,并收到500错误。我想看到那个错误消息,看看可能是什么问题。我怎么找到它?
using (var client = new HttpClient())
{
var fooURL = Url.RouteUrl("PayrollApi", new { httproute = string.Empty, controller = "LeaveRequest" }, Request.Url.Scheme);
var repsonse = client.PostAsJsonAsync(fooURL, leaveRequest).Result;
}
我没有看到该文本的存储位置,因此我可以找出需要修复的其他错误。我如何获得该文本?
更新:我没有澄清的事情。我在我调用的WebAPI上放了一个断点,断点永远不会被击中。 然而,当我从Poster调用它时,我点击了断点。网址是正确的。
public HttpResponseMessage Post([FromBody]LeaveRequest value)
{
if (ModelState.IsValid)
{
// code here
}
}
答案 0 :(得分:20)
我能够进行更改以获取错误消息:
var repsonse = client.PostAsJsonAsync(fooURL, leaveRequest).Result.Content.ReadAsStringAsync();
而不是
var repsonse = client.PostAsJsonAsync(fooURL, leaveRequest).Result;
然后我能够看到我的错误并修复它。
答案 1 :(得分:0)
我正在调用我编写的Web API。我想看到的是 在该错误消息中查看可能存在的问题。
您可能希望将PayrollApi.LeaveRequest
中的代码放在try-catch块中,例如:
public HttpResponseMessage LeaveRequest()
{
try {
// do something here
}
catch(Exception ex) {
// this try-catch block can be temporary
// just to catch that 500-error (or any unexpected error)
// you would not normally have this code-block
var badResponse = request.CreateResponse(HttpStatusCode.BadRequest);
badResponse.ReasonPhrase = "include ex.StackTrace here just for debugging";
}
}
然后在try-catch块内调用以捕获额外的错误:
using (var client = new HttpClient())
{
// rest of your code goes here
try
{
var repsonse = client.PostAsJsonAsync(fooURL, leaveRequest).Result;
}
catch(HttpRequestException httpEx)
{
// determine error here by inspecting httpEx.Message
}
}
httpEx.Message
可以收到此消息:
响应状态代码不表示成功:500 ({stack_trace_goes_here})。