我使用C#通过WinRM连接到远程PC。
我希望能够尽可能快地检测到连接是否丢失(但遥控器没有正确关闭,例如PC电源关闭或以太网电缆断开)。我希望在不到5秒的时间内检测到连接中断。这有可能吗?
作为信息,我使用这个连接来运行一些PowerShell命令,这些命令可以持续几分钟。最理想的情况是,无论我是否处于这些命令的中间,我都希望检测到连接丢失。
我的C#代码是:
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(true, ipAddress, 5986, "/wsman", "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", accountCredential);
connectionInfo.SkipCACheck = true; // SkipCACheck allows to connect without installing the certificate on the host.
connectionInfo.SkipCNCheck = true; // SkipCNCheck allows server name to not match certificate.
connectionInfo.OpenTimeout = 3000; // 3s
connectionInfo.OperationTimeout = 300000; // 5min
connectionInfo.IdleTimeout = 7200000; // 2h
runspace = RunspaceFactory.CreateRunspace(connectionInfo);发布于 2019-06-07 03:41:07
我发现ping很适合这样的东西:
private bool HostPingable(string host)
{
try
{
var ping = new Ping();
var reply = ping.Send(host);
return reply != null && reply.Status == IPStatus.Success;
}
catch (Exception e)
{
e.LogException(Logger, host);
}
finally { GC.Collect(); }
return false;
}在建立任何WinRM连接之前,您可以运行此命令来查看主机是否在线。
https://stackoverflow.com/questions/56484052
复制相似问题