首页 > 解决方案 > Vb.net - 读取 http 侦听器的输入流时流读取器引发错误

问题描述

我有一个奇怪的错误。

我分别通过网络服务器执行 gat 数据 - 我正在运行网络服务器,并通过来自外部组件的 post 参数获取数据。

消息确实包含经过 base64 编码的图像。

没有图像,一切都按预期工作 - 但是使用图像,在大约 30% 的按摩中,我确实遇到了错误。

在此处输入图像描述

导致错误的是流读取器。基本上它说无效的功能。

这是整个函数:

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 次数据。

氪,

安德烈亚斯

这是异常的详细信息:

在此处输入图像描述

标签: vb.netwebserver

解决方案


推荐阅读