【问题标题】:C# opening unavailable network path with Process.Start()C# 使用 Process.Start() 打开不可用的网络路径
【发布时间】:2011-09-29 15:03:08
【问题描述】:

我正在通过网络打开目录:

System.Diagnostics.Process.Start(path); // path = UNC network path

但有 2 个网络路径:

\\This_PC_Does_Not_Exist\dir

\\This_PC_Is_Turned_Off\dir

为什么第一个需要非常快才能验证网络 PC 不存在,而第二个需要大约两分钟?如果我没记错的话,在 Windows 环境中需要 30 秒才能确定网络路径是否无法访问。

为什么在这种情况下需要这么长时间以及如何加快PC关闭的信息?

【问题讨论】:

    标签: c# .net windows network-programming unc


    【解决方案1】:

    为了加载文件,Windows 必须首先与计算机建立文件共享连接。首先,它查找 UNC 名称以获取 IP 地址。如果机器不存在,它就无法获得 IP 地址,并且很快就会失败(如第一个示例所示)。如果确实存在(如第二个示例中所示),则 Windows 必须尝试连接。

    那么为什么超时应该是 30 秒却需要两分钟呢?一种可能性是它重试了几次。另一种可能性是你有不同的网络协议,它必须尝试每一个。

    【讨论】:

    • 有什么办法可以限制吗?我看过 Process.StartInfo 但它似乎没有任何可能有帮助的参数。
    • @yosh:如果您愿意,可能有一个注册表设置可以降低 30 秒超时。我不知道,但也许你可以问超级用户。
    • 嗯,我希望通过“不重试”和“仅使用 tcp”以编程方式限制访问,而不修改应用程序之外的任何内容。谢谢!
    【解决方案2】:

    检查计算机是否开启的更快方法是 ping 计算机。指定您喜欢的任何超时。应该会在几秒钟内得到响应...

    我猜响应缓慢与网络中仍然知道已关闭计算机的名称并与 IP 相关联有关。然后选择更长的超时时间,因为计算机应该在那里......

    【讨论】:

    • 许多计算机没有启用 ping(防火墙阻止了 ICMP ECHO)。
    • 嗯,还是值得一看的。 Ping 超时可能不是理想的解决方案,但在这种情况下可以工作..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多