Vb.net - считыватель потока выдает ошибку при чтении входного потока слушателя http - PullRequest
1 голос
/ 24 мая 2019

У меня странная ошибка.

Я получаю данные через веб-сервер, соответственно - я запускаю веб-сервер и получаю данные через параметр post из внешнего компонента.

Сообщения содержат изображения в кодировке base64.

Без изображений все работает как положено - однако с изображениями примерно в 30% всех сеансов массажа я получаю ошибку.

enter image description here

Ошибка чтения потока. В основном это говорит о недопустимой функции.

Это вся функция:

Public Sub MyCollectFromTriggerInterface()


    Main.MessageObj.MyMessage("DLVPDataCollector: ", "Start thread for DLVP collection. (Trigger Interface)", 3)
    Main.LogObj.MsgLog("ClassDLVPDataCollector", "MyCollectFromTriggerInterface", "Start thread for DLVP collection. (Trigger Interface)")

    'Falls das Betriebssytem den Server nicht 
    If Not System.Net.HttpListener.IsSupported Then
        Main.MessageObj.MyMessage("DLVPDataCollector: ", "!!! Windows XP SP2, Server 2003, or higher is required to use the HttpListener class !!!", 3)
        Main.LogObj.ErrLog("ClassDLVPDataCollector", "MyCollectFromTriggerInterface", "Windows XP SP2, Server 2003, or higher is required to use the HttpListener class.")
        Exit Sub
    End If

    'Den Listener starten.
    Dim listener As System.Net.HttpListener = New System.Net.HttpListener()
    Dim adr As String = Main.LoadSettingsObj.Settings_DlvpDatacollector_HTTPServerAddress_TriggerInterface
    listener.Prefixes.Add(adr)
    listener.Start()
    Main.MessageObj.MyMessage("DLVPDataCollector: ", "Listener started. (Trigger Interface)", 3)
    Main.LogObj.MsgLog("ClassDLVPDataCollector", "MyCollectFromTriggerInterface", "Listener started. (Trigger Interface)")

    While True

        'Wenn die Applikation beendet werden soll.
        If Main.EndApplication = True Then
            Main.MessageObj.MyMessage("DLVPDataCollector: ", "Stop thread for DLVP collection. (Trigger Interface)", 3)
            Main.LogObj.MsgLog("ClassDLVPDataCollector", "MyCollectFromTriggerInterface", "Stop thread for DLVP collection. (Trigger Interface)")
            Exit While
        End If

        'Auslesen, was der Client gesendet hat.
        Dim response As HttpListenerResponse = Nothing
        Dim context As HttpListenerContext = listener.GetContext()
        Dim PostParameter = New StreamReader(context.Request.InputStream).ReadToEnd()

        'Neuen Thread starten.
        Dim obj As New ArgumentsTo_MyDoWorkflowTI
        obj.Data = PostParameter
        Dim t As New Threading.Thread(AddressOf MyDoWorkflowTI)
        t.IsBackground = True
        t.Start(obj)

        'Antwort an den Client senden.
        Dim b As Byte() = Encoding.UTF8.GetBytes("ACK")
        context.Response.StatusCode = 200
        context.Response.KeepAlive = False
        context.Response.ContentLength64 = b.Length
        Dim output = context.Response.OutputStream
        output.Write(b, 0, b.Length)
        context.Response.Close()

    End While

End Sub

Я думаю, это как-то связано с длиной сообщения, проблемой тайм-аута или чем-то еще ...

У кого-нибудь есть идеи?

Интерфейс получает данные до 4 раз в секунду.

Kr

Andreas

Это детали исключения:

enter image description here

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