【发布时间】:2017-06-29 08:50:55
【问题描述】:
有一个 POST rest api,以前可以通过代码工作。但最近它坏了,没有返回任何响应。但是,如果我尝试从 Postman 调用 api,那么它工作正常。
我可以通过什么方式进行调试以找到问题的根本原因?
以下是我用来调用此 post rest api 的 C# 代码
public async Task SaveToServerAsync()
{
string filePath = @"<filePath>";
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
// tried this line of code from another SO answer, but this didn't work either
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://<server name>/");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "d2ebf9aefbaa416adcd0");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("Accept", "*/*");
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
using (var fileStream = new FileStream(filePath, FileMode.Open))
{
var content = new MultipartFormDataContent();
content.Add(new StreamContent(fileStream), "file", filePath);
content.Add(new StringContent("e8d002f9-f381-44c2-bce0-13416929f14d"), "Id");
try
{
var response = await client.PostAsync("<rest api end point>", content).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
Debug.Write("Response received");
}
}
catch (Exception ex)
{
Debug.Write("Exception occured");
Debug.Write(ex.Message);
}
finally
{
}
}
}
}
它总是进入异常块,异常为“任务已取消”
当它仍然可以从邮递员工作时,我不确定如何调试它。
【问题讨论】:
-
我不确定这是否会对您有所帮助,但我有类似的经历,我收到的响应是“任务已取消”作为 AggregateException 的一部分。对我来说,问题是超时问题。如果有帮助,请查看我的answer to a similar question 或至少查看该类似问题的其他答案。它可能会为您提供其他尝试。
-
可能有一个内部异常 - 你找过吗?设置断点并检查异常对象
-
哦,所以我启用了异常,可以看到有一个对象已处置异常,它表示无法访问已处置的对象。可能共享的链接可能对我有所帮助。我只是检查一下。
-
我删除了 httpClient 的 using 语句,但仍然看到无法访问已处理对象的相同异常。
-
如果您暂时删除您的 try/catch,它将在发生这种情况的实际行中断。然后,您有望将其缩小到正确的对象。
标签: c# rest asp.net-web-api dotnet-httpclient