Гибридное соединение Azure - обработка исключений

Подключение к локальным службам с помощью гибридных подключений Azure

При производстве подключение и отправка сообщения гибридному подключению Azure с использованием протокола веб-сокета с использованием приведенного ниже кода.

Когда целевое гибридное соединение Azure недоступно, выдается сообщение об ошибке: «Microsoft.Azure.Relay.EndpointNotFoundException: удаленное имя не может быть разрешено: 'myAzureHC-dev.servicebus.windows.net'»,

        try
    {
       var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(relayKey, relayKeyValue);

        var hcClient = new HybridConnectionClient(new Uri(String.Format("sb://{0}/{1}", relayNamespace, relayConnectionName)), tokenProvider);

        HybridConnectionStream hcStream = await hcClient .CreateConnectionAsync();

        StreamWriter writer = new StreamWriter(hcStream ) { AutoFlush = true };

        await writer.WriteLineAsync(jsonPayload); 
      }
 catch (RelayException ex)
        {
          //this block executes when Azure Hybrid Connection not available
        }

Недавно пытался использовать протокол http для подключения и отправки сообщения в гибридное соединение Azure, как показано ниже,

Когда целевое гибридное соединение Azure недоступно, оно выдает ДРУГОЙ тип исключения и сообщение ":"System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса ", который отличается от типа исключения и сообщения, создаваемого способом подключения через веб-сокет к гибридному подключению Azure для того же сценария, т. е. сценария гибридного подключения Azure недоступна

Эта разница в типе исключения и сообщении нарушает обратную совместимость после миграции с веб-сокета на последний способ HTTP-подключения к гибридному соединению Azure. Точно так же для других сценариев, таких как «AuthorizationFailure», «EndpointNotFound», при подключении к гибридному соединению Azure «HTTP» исключение не возникает.

Как преодолеть разницу в разнице сообщений об исключении между старым способом "websocket" и последним способом "HTTP" подключения к гибридному соединению Azure? таким образом, чтобы поддерживать обратную совместимость с существующим клиентом PRODUCTION после миграции.

           try
       {
         var tokenProvider = 
         TokenProvider.CreateSharedAccessSignatureTokenProvider(relayKey, relayKeyValue);

        var uri = new Uri(string.Format(String.Format("sb://{0}/{1}", relayNamespace, relayConnectionName));

        var token = (await tokenProvider.GetTokenAsync(uri.AbsoluteUri, TimeSpan.FromMinutes(5))).TokenString; 

       var response = await _httpClient.PostAsync(uri, content);
      }
    catch (RelayException ex)
    {
    }
    catch (HTTPRequestException ex)
    {
          //this block executes when Azure Hybrid Connection not available
    }

0 ответов

Другие вопросы по тегам