HttpContext.Response основной сокет неожиданно завершает работу

При компиляции шаблоны должны быть созданы экземплярами , прежде чем их компилировать в объектный код. Это создание может быть достигнуто только в том случае, если известны аргументы шаблона. Теперь представьте сценарий, в котором функция шаблона объявлена ​​в a.h, определенная в a.cpp и используемая в b.cpp. Когда компилируется a.cpp, не обязательно известно, что для предстоящей компиляции b.cpp потребуется экземпляр шаблона, не говоря уже о том, какой конкретный экземпляр это будет.

Можно утверждать, что компиляторы можно сделать умнее, чтобы «смотреть вперед» для всех применений шаблона, но я уверен, что это было бы нелегко создавать рекурсивные или другие сложные сценарии. AFAIK, компиляторы этого не делают. Как заметил Антон, некоторые компиляторы поддерживают явные декларации экспорта экземпляров шаблонов, но не все компиляторы поддерживают его (пока?).

6
задан remy_rm 6 March 2019 в 14:48
поделиться

3 ответа

См. Этот блог, в котором показано, как транслировать видеофайл с использованием aspnet webapi с помощью PushStreamContent .

https://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/

https: //www.c-sharpcorner.com/article/asynchronous-videos-live-streaming-with-asp-net-web-apis-2-0/

0
ответ дан Vitor Paulino 6 March 2019 в 14:48
поделиться

У вас могут быть некоторые проблемы там.

Сначала будет ситуация TimeOut. Возможно, что из-за некоторых проблем в Интернете время между запросом и ответом больше указанного (я полагаю, что если вы этого не сделаете, по умолчанию установлено значение 60 секунд).

Другое дело, что размер файла может быть слишком большим, чтобы писать полностью в одном ответе пакета. Но это может произойти при любом запросе, не только в «плохие» моменты подключения к Интернету.

Также возможно, что, поскольку интернет-соединение нестабильно, ваш «сервер» обнаруживает, что «клиент» не распознал (даже кратко), поэтому закрыл сокет.

0
ответ дан SammuelMiranda 6 March 2019 в 14:48
поделиться

Это звучит как проблема, с которой я сталкивался ранее, учитывая информацию о том, что Интернет работает медленно или ненадежно, я хотел бы предложить использовать сокет UDP вместо TCP, поскольку они не генерируют исключения, когда соединение разрывается на короткое время, или если во время передачи теряется небольшое количество данных, см. здесь . API очень похож, см. здесь . Возможно, было бы немного неудобно переопределять, но я думаю, что это решит вашу проблему.

Мое другое понимание заключается в том, что вы пытаетесь, что catch catch указывает, что он принимает только IOException, хотя он и перехватывает SocketException, в большинстве случаев я просто использую универсальный класс Exception, чтобы избежать попыток определить, какие исключения будут брошен откуда.

Просто измените:

catch (IOException e)

на

catch (Exception e)

И IOException, и SocketException наследуются от класса Exception, поэтому остальная часть кода остается неизменной. Надеюсь, это даст вам больше информации о проблемах.

0
ответ дан iggy12345 6 March 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: