【发布时间】:2018-07-16 09:32:07
【问题描述】:
过去一天我一直在处理一个问题,当我尝试在 Xamarin 中测试我的 REST API 时,我似乎遇到了 System.AggregateException。
现在,我已尽力缩小问题范围。请记住,问题绝对不在于代码本身,因为当我在控制台应用程序中测试完全相同的代码时,它可以正常工作并返回我的数据。仅当我在 Xamarin 中发送请求时才会引发错误。
错误在下面的第 4 行用“response”变量抛出。
(我也尝试过等待和异步运行该方法。)
public void TestReadData()
{
string content = "error";
HttpResponseMessage response = client.GetAsync("api/merchants").Result;
content = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(content);
}
【问题讨论】:
-
这里有一些问题,您通过调用
Result来阻止。这也是它被包裹在 AggregateException 中的原因,您需要捕获它并打开它以查看发生了什么。此外,它在控制台应用程序中运行良好的原因是 Android 使用它自己的 Http 客户端实现,该实现不同于默认的 .net 实现 -
@JamieRees 感谢您的回复。我用 try/catch 包围它,发现异常的堆栈跟踪如下:
-
'在 System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in
:0 \n 在 System.Threading.Tasks.Task 1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x0002b] in <f32579baafc1404fa37ba3ec1abdc0bd>:0 \n at System.Threading.Tasks.Task1[TResult ].get_Result () [0x0000f] in:0 \n 在 Biziboards.Database.DatabaseManager.TestReadData () [0x00008] in D:\\Documents\\Biziboards\\Biziboards Xamarin App\\Biziboards\\' -
不太清楚从这里去哪里。
-
at Biziboards.Database.DatabaseManager.TestReadData这似乎是异常发生的地方,你应该看看这个方法
标签: rest xamarin xamarin.forms xamarin.android