Rasdial 错误 756 只能通过重启来解决

Rasdial 错误 756 只能通过重启来解决

我在使用 Rasdial 发起的 VPN 连接中遇到了一个非常令人沮丧的问题。

我有几台计算机(Windows XP Professional SP2),用作无人值守现场测量设备。它们通过使用我从应用程序调用的批处理文件,通过 UMTS 连接自动与服务器建立 VPN 连接。

为了启动连接,我使用以下批处理文件:

rasdial vpnserver /disconnect

rasdial VPNserver stationname password

只要 UMTS 连接正常,此方法就可以正常工作。但是,如果 UMTS 因某种原因断线然后又恢复,我就无法重新建立 VPN 连接。当我运行上述批处理文件时,我收到以下错误:

756 “连接已在拨号”

我无法“清除”连接。重新连接的唯一方法是重新启动整个计算机,这是不可接受的。

我尝试按如下方式扩展批处理文件;

rasdial vpnserver /disconnect

route -f

ipconfig /release

ipconfig /renew

arp -d *

nbtstat -R

nbtstat -RR

ipconfig /flushdns

ipconfig /registerdns

rasdial VPNserver stationname password

尝试重置与网络相关的任何内容。遗憾的是,这没有任何效果,我仍然收到相同的错误。

必须通过重新启动机器来重置某些东西,但我无法找出这是什么以及如何从命令行执行此操作。

如何在不重新启动整个机器的情况下解决这个问题?

答案1

我在 Windows 7 上遇到过类似的问题。有时,在失去物理连接并自动重拨 PPPoE 后,rasautou.exe 会开始快速消耗数 GB 的 RAM。在 rasautou 进程被终止后,rasman 服务停止响应,无法通过正常方式重新启动。

在这些情况下,可以通过查找并终止相关的 svchost.exe 进程来重新启动 rasman 服务。此后,rasdial 和 rasphone 应该可以再次工作。

为了避免干扰其他服务,可以将rasman设置为在其自己的进程中运行:sc config rasman type= own

为了完全避免这个问题,我还在连接属性中禁用了自动重拨。相反,我创建了一个事件触发的任务计划程序任务来调用 rasdial。这还允许在更广泛的错误范围内重拨,在启动时拨号,并防止重拨窗口窃取焦点。

设置此类任务有一些注意事项。示例可见这里那里. 涉及的 XPath 实现有局限性和怪癖,因此请务必在事件查看器中测试您的自定义事件过滤器。远程访问错误代码。您还需要将该任务更改为“如果任务已在运行,则将新实例排入队列”。

我使用 2 个单独的触发器。一个排除代码 631(手动断开连接)和 651:

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider/@Name='RasClient'][EventID=20226 or EventID=20227]]</Select>
    <Suppress Path="Application">*[EventData[Data[4]=631 or Data[4]=651]]</Suppress>
  </Query>
</QueryList>

另一个是针对 651 的,延迟 5 秒:

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider/@Name='RasClient'][EventID=20227]][EventData/Data[4]=651]</Select>
  </Query>
</QueryList>

有时 rasman 不会抛出错误 651,而是会启动 2 分钟超时并抛出错误 638。我找不到任何方法来调整该超时。但是,如果您在此期间终止 rasdial.exe,您将挂起 rasman。

答案2

rasdial /disconnect断开所有连接,无论名称如何

相关内容