#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?