Отображение веб-сокетов SignalR из mcr как контейнера pnet WebAPI - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь запустить приложение 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)?

1 Ответ

0 голосов
/ 06 августа 2020

Оказывается, я допустил ошибку при развертывании контейнера и опубликовал практически ту же версию кода. Когда я сказал: «Я только что обновил nugets проекта до последних библиотек SignalR (только две младшие версии впереди)». это было точное заявление, но результаты так и не были реализованы. После того, как я разместил обновленные библиотеки, я могу подтвердить, что соединение с сокетом восстановлено.

В конечном итоге обновление SignalR устранило проблему.

...