vb.net - 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 次数据。
氪,
安德烈亚斯
这是异常的详细信息:
解决方案
推荐阅读
- docker - 从 docker-compose 执行 Ant
- php - 该命令是否有替代方法,可以在 Windows 机器上运行?
- java - 如何修复 java.lang.IllegalStateException
- python - 修复字典中的项目
- aws-iot - aws iot 规则失败并显示消息“评估运算符'='时出错:未定义的结果”
- python - 如何在 django 中创建一个函数来为我的评论添加评论
- bash - 如何使用 sed 将一个变量替换为另一个变量
- java - 有没有办法为同一个 ImageView 使用多个源?
- machine-learning - 机器学习测试数据
- android - Firebase 存储对开发人员隐藏数据