MSTSC + 网关在自动重新连接时崩溃

Mas*_*uda 6 rdp remote-desktop gateway mstsc

我们有一个用作 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(long)
mstscax.dll!CClientProxyTransport::GetErrorStatus(long,class CClientProxyTransport *)
mstscax.dll!CProxyClientSendPacket::OnComplete(long,unsigned long)
mstscax.dll!CAAAsyncSend::OnComplete(long)
mstscax.dll!CAARpcClientChannel::Shutdown(unsigned long,class IAAAsyncOperation *)
mstscax.dll!CAAAsyncDisconnectChannel::Invoke(unsigned long,class CAAChannel *,class IAATransportChannel *)
mstscax.dll!CAAChannel::DisconnectInternal(int,long)
mstscax.dll!CAARpcClientChannel::HandleReceiveComplete(struct _RPC_ASYNC_STATE *)
mstscax.dll!CAARpcClientChannel::HandleIOCompletion(struct _OVERLAPPED *,unsigned long)
mstscax.dll!CAagIO::AAGIoThreadFunc(void *)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()

小智 1

我们发现这与网关上的登录消息有关。如果您禁用网关上的登录消息,它就可以工作!

我现在不知道为什么会这样。但这是一个快速解决方案。我们希望微软能够纠正这个错误。