ASP.Net Сбой OData при завершении SSL в LB

#asp.net #https #odata #owin #load-balancing

#asp.net #https #odata #owin #балансировка нагрузки

Вопрос:

У меня проблема с использованием HTTPS для доступа к ASP.NET Конечная точка OData. ASP.NET сайт размещен через OWIN. Я использую пакет NuGet от Microsoft.AspNet.WebAPI.OData для части OData (v3). Завершение SSL происходит за пределами сервера в отдельном балансировщике нагрузки.

Доступ к конечным точкам OData с помощью REST-клиента (например, Postman) работает нормально: https://api.my-domain.com/odata/v3

Но когда я использую OData-клиент (например, Excel или PowerBI), доступ завершается сбоем с общим сообщением о том, что хост принудительно закрыл соединение.

Кроме того, я обнаружил, что при доступе к конечной точке https://api.my-domain.com/odata/v3 через Postman я получаю некоторые метаданные XML, которые ссылаются на обычную конечную точку http (см. Фрагмент ниже), которая заблокирована LB.

 <?xml version="1.0" encoding="utf-8"?>
<service xml:base="http://api.my-domain.com/odata/v3" xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom">
<workspace>
   ...
 

Кроме того, я проанализировал трафик из Excel / PowerBI с помощью Wireshark и обнаружил, что клиенты используют обычную конечную точку http (как показано в метаданных выше) после первоначального запроса с помощью https. Я не знаком с деталями протокола OData, но я предполагаю, что клиенты определяют адрес по метаданным.

Для проверки я разблокировал порт 80 в LB и вуаля, Excel / PowerBI может успешно подключиться, независимо от того, использую ли я http или https для первоначального запроса.

Но как решить эту проблему (я не хочу разрешать трафик по http). Можно ли указать ASP.NET Промежуточное программное обеспечение OData для генерации метаданных с помощью URI https?