gcogco10 Ответов: 1

System.net.sockets.socketexception в Microsoft azure?


Привет Команда

Я испытываю SocketException в своем классе readdevice-2message, что может быть результатом этого?

System.Net.Sockets.SocketException: 'A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond'


Что я уже пробовал:

using System;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.EventHubs;

namespace ReadMessageApplication
{
    class Program
    {
        private readonly static string s_eventHubsCompartibleEndpoint = "sb://iothub-ns-university-2081416-42bc501981.servicebus.windows.net/";
        private readonly static string s_eventHubsCompartiblePath = "universityiothub";
        private readonly static string s_iotHubSasKey = "E****";
        private readonly static string s_iotHubSasK<pre><pre lang="c#">
eyName ="iothubowner";
частный статический EventHubClient s_eventhubClient;

частная статическая асинхронная задача ReceivedMessageFromDeviceAsync(string partition, CancellationToken ct)
{
ВАР eventHubReciver = s_eventhubClient.CreateReceiver ("$Default", partition, EventPosition.FromEnqueuedTime(Типа Datetime.Сейчас));
Приставка.WriteLine("создать приемник на разделе:" + раздел);

в то время как (правда)
{
если (ct.IsCancellationRequested) перерыв;
Приставка.WriteLine("прослушивание сообщений на:" + раздел);

var events = ожидание eventHubReciver.ReceiveAsync(100);

if (events == null) continue;

оператора foreach(функция eventdata функции eventdata в события)
{
данных string = кодировка.Кодировке utf8.Метода getString(функция eventdata.Тела.Массив);
Приставка.WriteLine("сообщение получено на раздел {0}:", раздел);
Приставка.WriteLine(" {0}:", data);
Приставка.WriteLine("свойства приложения (задаются устройством)");

foreach(var prop в eventData.Свойства)
{
Приставка.WriteLine(" {0}: {1}", опора.Ключ, проп.значение);
}
Приставка.WriteLine("системные свойства (задаются центром Интернета вещей)");
по каждому элементу(ВАР опору в функция eventdata.Системные свойства)
{
Приставка.WriteLine(" {0}: {1}", опора.Ключ, проп.значение);
}
}
}
}

частная статическая асинхронная задача Main(string[] args)
{
Приставка.WriteLine("сообщение устройства IOT Hub - чтение сообщения устройства в облако. Ctrl-C для выхода.\n");

var connectionString = new EventHubsConnectionStringBuilder(новый Uri(s_eventHubsCompartibleEndpoint), s_eventHubsCompartiblePath, s_iotHubSasKeyName, s_iotHubSasKey);
s_eventhubClient = EventHubClient.CreateFromConnectionString(connectionString.Метод toString());

//приемник разделов для каждого концентратора.
ВАР runtimeInfo = ждут s_eventhubClient.GetRuntimeInformationAsync();
ВАР dtwoPartition = runtimeInfo.PartitionIds;

CancellationTokenSource ct = новый CancellationTokenSource();

Приставка.CancelKeyPress += (s, e) =>
{
е.Отмена = истина;
кар.Отменить();
Приставка.WriteLine("Выход..");
};
var tasks = новый список<task>();
foreach(строковый раздел в dtwoPartition)
{
задачи.Добавить(ReceivedMessageFromDeviceAsync(раздел, КТ.Маркер));
}
Задача.WaitAll(задачи.Метод toArray());
}
}
}

1 Ответов

Рейтинг:
0

gcogco10

private static async Task Main(string[] args)
     {
         Console.WriteLine("IOT Hub Device Message - Read device to cloud message. Ctrl-C to exit.\n");

         var connectionString = new EventHubsConnectionStringBuilder(new Uri(s_eventHubsCompartibleEndpoint), s_eventHubsCompartiblePath, s_iotHubSasKeyName, s_iotHubSasKey);
         s_eventhubClient = EventHubClient.CreateFromConnectionString(connectionString.ToString());

         //partition receiver for each hub.
         var runtimeInfo = await s_eventhubClient.GetRuntimeInformationAsync();
         var dtwoPartition = runtimeInfo.PartitionIds;

         CancellationTokenSource ct = new CancellationTokenSource();

         Console.CancelKeyPress += (s, e) =>
          {
              e.Cancel = true;
              ct.Cancel();
              Console.WriteLine("Exiting..");
          };
         var tasks = new List<Task>();
         foreach(string partition in dtwoPartition)
         {
             tasks.Add(ReceivedMessageFromDeviceAsync(partition, ct.Token));
         }
         Task.WaitAll(tasks.ToArray());
     }