wpf - WPF 应用程序未在 Windows Server 2016 的信号器集线器中连接
问题描述
当我在windows server 2016 标准中运行 exe并且在我的开发机器和另一台机器上运行相同的 exe时,我无法连接信号器集线器
我的代码 公共事件消息作为操作(BSLMessage)
Private g_Application_Path As String = System.AppDomain.CurrentDomain.BaseDirectory
Private connection As HubConnection
Private serverURI As String = "http://test.azurewebsites.net/bsl"
'Private serverURI As String = "https://localhost:44301/bsl"
Public Async Sub Start()
Try
Await ConnectAsync()
Catch ex As Exception
End Try
End Sub
Public Async Sub Close()
Try
Await CloseAsync()
Catch ex As Exception
End Try
End Sub
Private Async Function ConnectAsync() As Task
Try
connection = New HubConnectionBuilder().WithUrl(serverURI).Build()
'connection.HandshakeTimeout = TimeSpan.FromSeconds(30)
'connection.ServerTimeout = TimeSpan.FromSeconds(30)
Await connection.StartAsync
If connection.State <> HubConnectionState.Connected Then
WriteErrorLog("Azure Connection Failed: " & serverURI)
End If
AddHandler connection.Closed, AddressOf Connection_Closed
AddHandler connection.Reconnected, AddressOf Connection_Reconnected
connection.On(Of BSLMessage)("ReceiveBSLVideo", Sub(x) RaiseEvent Message(x))
Catch ex As Exception
WriteErrorLog(ex)
End Try
End Function
Private Async Function CloseAsync() As Task
Try
Await connection.StopAsync
Catch ex As Exception
End Try
End Function
Private Function Connection_Reconnected(arg As String) As Task
End Function
Private Function Connection_Closed(arg As Exception) As Task
End Function
Private Sub WriteErrorLog(ByVal Message As Object)
Try
Dim outputMessage As New List(Of String)
Select Case Message.GetType()
Case GetType(String)
outputMessage.Add(Message.ToString)
Case Else
Dim ex As Exception = Message
Dim st As StackTrace = New StackTrace(ex, False)
If st.FrameCount > 0 Then
Dim frame As StackFrame = st.GetFrame(1)
Dim ownerType As Type = frame.GetMethod().DeclaringType
outputMessage.Add("Error Rasied: " & frame.GetMethod().DeclaringType.FullName.ToString)
End If
While ex IsNot Nothing
outputMessage.Add(ex.Message.ToString)
outputMessage.Add(ex.StackTrace.ToString)
ex = ex.InnerException
End While
'Console.WriteLine()
End Select
Dim Filename As String = Now.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture) & "-FFMpegResizer-Error.log"
Dim objWriter As New System.IO.StreamWriter(IO.Path.Combine(g_Application_Path, Filename), True)
For Each s In outputMessage
objWriter.WriteLine(Now & "," & s)
Next
objWriter.Close()
objWriter = Nothing
Catch ex As Exception
End Try
End Sub
错误日志:
24/08/2021 11:18:12,引发错误:System.Runtime.CompilerServices.TaskAwaiter 24/08/2021 11:18:12,服务器在握手开始之前断开连接。
2021 年 8 月 24 日 11:18:12,在 Microsoft.AspNetCore.SignalR.Client.HubConnection.d__80.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.AspNetCore.SignalR.Client.HubConnection.d__58.MoveNext() --- 堆栈跟踪从先前位置结束异常被抛出 --- 在 Microsoft.AspNetCore.SignalR.Client.HubConnection.d__58.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪--- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务)在 Microsoft.AspNetCore.SignalR.Client 的 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)。HubConnection.d__50.MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务)在 Microsoft.AspNetCore.SignalR.Client.HubConnection.d__49.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft .AspNetCore.SignalR.Client.HubConnection.d__49.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft .AspNetCore.SignalR.Client.HubConnection.d__49.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime。 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38Microsoft.AspNetCore.SignalR.Client.HubConnection.d__49.MoveNext() 处的 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- 在 System.Runtime.CompilerServices.TaskAwaiter 上一个抛出异常的位置结束堆栈跟踪.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38Microsoft.AspNetCore.SignalR.Client.HubConnection.d__49.MoveNext() 处的 CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- 在 System.Runtime.CompilerServices.TaskAwaiter 上一个抛出异常的位置结束堆栈跟踪.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at SignalRTestApp.DPMMessenger.VB$StateMachine_10_ConnectAsync.MoveNext() in DPMMessenger.vb:line 38
解决方案
推荐阅读
- javascript - 使用 jQuery 和 JavaScript 从表单元素将字符串变量传递给 href
- google-api - 无法使用 API 密钥获取 Google Drive 文件父级
- powerbi - 如何通过 Power BI DirectQuery 从多对一相关表中获取映射值?
- java - Spring - 验证 bean 中的字符串字段,它实际上是一个日期
- serial-port - 通过串口从 Scanner 接收数据
- python - 在 from-import 语句中使用 python 函数中的输入
- .net - NetworkStream 线程瓶颈
- f# - 使用接受字符串和列表的构造函数创建类型
- java - 为什么 Chronicle Queue 在关闭后会保留文件一秒钟?
- json - 在 ForEach 循环中使用 powershell 输出 JSON