Я создал сценарий Powershell, который проверяет кучу URL-адресов. Ниже приведен фрагмент кода, который использует WebClient для чтения из списка URL по одному.Powershell: Почему System.Net.WebClient не работает на третьем openRead для того же хоста
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.
Magic, добавил '$ поток. close() 'и' $ wc.dispose() 'в' finally' -блоке, что решило проблему. – rhellem