HttpListenerContext.AcceptWebSocketAsync ошибка 1229 - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь добавить WebSocket в существующий код, который обрабатывает HTTP-запросы.Не используя IIS или ASP.NET, просто код C # с HttpListener.Когда клиент отправляет запрос на обновление, сервер бомбит:

System.Net.WebSockets.WebSocketException was unhandled by user code
  ErrorCode=1229
  HResult=-2147467259
  Message=An error occurred when sending the WebSocket HTTP upgrade response during the AcceptWebSocketAsync operation. The HRESULT returned is '1229'
  NativeErrorCode=1229
  Source=System
  StackTrace:
       at System.Net.WebSockets.WebSocketHelpers.<AcceptWebSocketAsyncCore>d__17.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
       at mycode.<mymethod>d__46.MoveNext() 
  InnerException: 

Код вызова:

HttpListenerContext context = listener.GetContext();
if (context.Request.IsWebSocketRequest)
{
    HttpListenerWebSocketContext wsContext = await context.AcceptWebSocketAsync(null);

Я нахожу документацию MS по всему пространству имен WebSockets бесполезной без примеров кода,Я не знаю, что он пытается сказать мне здесь (кроме очевидного факта, что я не обрабатываю исключение - я хочу знать, почему существует исключение в первую очередь).

ЭтоWindows 10, .NET Framework 4.5.В документации я заметил места, в которых говорится, что WebSockets работает только с Windows 8 и 2012, но я предполагаю, что он должен работать и с 10.

1 Ответ

0 голосов
/ 14 июня 2018

Пришлось перейти к Windows Features, под IIS (хотя я не использую IIS) и включить протокол WebSocket.Я не знаю, является ли это отключение Win10 по умолчанию или просто из-за образа, который он мне установил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...