我们有一个用作 RemoteApp 的应用程序。用户通过网关访问 RemoteApp。
每次发生异常断开连接(连接失败)时,在 Win64 上运行 MSTSC v.6.3 的用户(已在 Windows 7 和 Windows 8 上测试)都会遇到崩溃。
典型的崩溃是 MSTSC 内部的访问冲突,错误消息为“远程桌面连接已停止工作”。但有时 MSTSC 只是冻结。事件查看器显示“应用程序错误”,事件 ID 1000,异常代码 0xC0000005(== 访问冲突)。
Win64 上的 MSTSC v.6.2 或更早版本或 Win32 上的 MSTSC(任何版本)均可正常运行。
如果我们允许用户绕过网关服务器直接访问 TS 服务器,则不会发生崩溃。在这种情况下,连接失败后,MSTSC 自动重新连接成功。
有人知道解决这个问题的办法吗?欢迎任何帮助。
来自事件查看器的其他信息:
错误应用程序名称:mstsc.exe,版本:6.3.9600.16415,时间戳:0x524b5b3d 错误模块名称:mstscax.dll,版本:6.3.9600.16503,时间戳:0x52c5f878 异常代码:0xc0000005 故障偏移量:0x0000000000439b7a 错误进程 ID:0x1658 错误应用程序启动时间:0x01cf84a3cfff7048 错误应用程序路径:C:\Windows\system32\mstsc.exe 错误模块路径:C:\Windows\system32\mstscax.dll
Visual Studio Express 2012 调试器的堆栈跟踪:
mstscax.dll!CClientProxyTransport::SetErrorStatus(长) mstscax.dll!CClientProxyTransport::GetErrorStatus(长,类CClientProxyTransport *) mstscax.dll!CProxyClientSendPacket::OnComplete(长整型,无符号长整型) mstscax.dll!CAAAsyncSend::OnComplete(长) mstscax.dll!CAARpcClientChannel::Shutdown(无符号长整型,类IAAAsyncOperation*) mstscax.dll!CAAAsyncDisconnectChannel::Invoke(无符号长整型,类CAAChannel*,类IAATransportChannel*) mstscax.dll!CAAChannel::DisconnectInternal(int,long) mstscax.dll!CAARpcClientChannel::HandleReceiveComplete(结构_RPC_ASYNC_STATE *) mstscax.dll!CAARpcClientChannel::HandleIOCompletion(struct _OVERLAPPED *,无符号长整型) mstscax.dll!CAagIO::AAGIoThreadFunc(void *) kernel32.dll!BaseThreadInitThunk() ntdll.dll!RtlUserThreadStart()
答案1
我们发现这与网关上的登录消息有关。如果您禁用网关上的登录消息,它就会起作用!
我不知道为什么会发生这种情况。但这是一个快速修复。我们希望微软能纠正这个错误。