Я пытаюсь запустить приложение ASP. NET (WebAPI, НЕ Core) внутри контейнера и открыть доступ к веб-сокету. Кажется, все должно «просто работать», но у меня довольно много времени, чтобы это произошло. Вот мой Dockerfile:
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-20200714-windowsservercore-ltsc2019
RUN powershell -Command Add-WindowsFeature Web-WebSockets
COPY package\\contents\\www /inetpub/wwwroot
COPY api\\Web.config /inetpub/wwwroot
Я отчаялся и добавил инструкцию RUN. Без изменений.
Я только что обновил nugets проекта до последних библиотек SignalR (только две младшие версии впереди).
Я знаю, что это проблема с контейнером, потому что я использую CONTAINER и BARE на такая же коробка. На своей машине я делаю:
$> wscat -c 'wss://CONTAINER/signalr/connect?transport=webSockets&clientProtocol=1.5&..'
error: Unexpected server response: 400
$> wscat -c 'wss://BARE/signalr/connect?transport=webSockets&clientProtocol=1.5&..'
Connected (press CTRL+C to quit)
Я должен упомянуть, что части приложения, не связанные с веб-сокетами, хорошо работают в обоих сценариях ios. К сожалению, резервный вариант serverSentEvents не подойдет для моего варианта использования. Он должен иметь возможность согласовывать подключение к сокету.
Есть мысли о том, что еще я мог бы проверить? Кому-нибудь повезло запустить сокет из контейнера as pnet (NOT Core)?