我创建了一个Powershell脚本来检查一堆URL。下面是使用WebClient逐个读取url列表的代码片段。
try {
$log.debugFormat("Now checking endpoint={0}", $checkUrl)
$wc.OpenRead($checkUrl)
$log.infoFormat("guid={0} loop={1} endpoint={2} status=success", ($guid, $i, $checkUrl))
} catch [System.Net.WebException] {
$log.errorFormat("guid={0} Could not connect to {1}", ($guid, $checkUrl))
$ErrorMessage = $_.Exception.Message
$log.errorFormat("{0}", $ErrorMessage)
奇怪的是,我提供的每一台主机每三次尝试就会超时。首先,我花了几个小时对网络服务器配置进行故障排除,以便现在意识到Webclient本身在第三次尝试连接到同一主机时会以某种方式超时。
我尝试添加$wc.Dispose()
并尝试每次在循环$wc = New-Object System.Net.WebClient
中创建对象,但没有帮助。
版本为Powershell -Command "Write-Host $psversiontable.psversion"
4.0,在Windows 2012上。
答案 0 :(得分:2)
您需要关闭流,例如:
$stream = $wc.OpenRead($checkUrl)
$stream.Close()
处置WebClient
也是个好主意