Я пытаюсь передать данные из приложения Xamarin в EventHub. Проблема в том, что приложение никогда не перехватывает SocketException. Я постоянно испытываю плохое соединение inte rnet и иногда нет соединения, поэтому SocketException регулярно возникает с ошибкой ' не удается связаться с хостом '.
Main Function;
try
{
SendMessageToEventHub().GetAwaiter().GetResult();
//I know i shouldn't be using GetAwaiter().GetResult() here in the main
//function but this is just for the test.
}
catch(Exception e)
{
//Never reaches here.
}
Я понял, что SocketException является асинхронным исключением, поэтому я попытался сделать весь код синхронным, но безуспешно.
public async Task SendMessageToEventHub()
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
eventClientDatas = new List<EventClientData>();
var eventClientData = new EventClientData() { id = null, timestamp = DateTime.UtcNow, mac = "test", nodeMac = "", rawData = "", rssi = 12, type = "Phone" };
eventClientDatas.Add(eventClientData);
Console.WriteLine($"Sending Message: {eventClientData}");
await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(eventClientDatas))));
await eventHubClient.CloseAsync();
}