2017-04-03 4 views
3

약 10 분 동안 순서대로 실행되는 PowerShell 스크립트에서 Invoke-WebRequest을 사용하고 있습니다.Invoke-WebRequest 호출시 '작업 시간이 초과되었습니다.'오류

우리는 드문 경우에 따라 System.Net.WebException는 메시지와 함께 발생하는 이유를 이해하려고 :

작업은 시간이 초과되었습니다

기사 Understanding MaxServicePointIdleTime and DefaultConnectionLimit을 읽기 타임 아웃을 나타냅니다 않습니다 연결 제한에 도달해야합니다. 연결 제한을 늘리는 것은 문제의 근본 원인을 해결하는 방법과 같지 않습니다.

이렇게하면 스크립트가 완료되면 스크립트가 모든 리소스를 삭제하지 않는다고 생각됩니다. 모든 리소스를 폐기하는 Invoke-WebRequest을 사용하는 권장 방법은 무엇입니까?

현재 수행 중입니다.

$response = Invoke-WebRequest -uri $uri_1 -ContentType $mime 
// do stuff with $response variable 

$response = Invoke-WebRequest -uri $uri_2 -ContentType $mime  
// do stuff with $response variable 

답변

1

당신이 $response | get-member을 할 경우에는 HtmlWebResponseObject 객체가 Dispose 방법을 가지고 있음을 볼 수있다, 그래서 당신은 수행하여 연결을 처리 할 수 ​​있어야한다는 :

$response.Dispose() 

당신은 그것으로 완료 한 후.

+0

재미 있습니다. 하나의 후속 질문, 현재 스크립트는 적어도 50 invoke-webrequest를 만들고 나는 원래 게시물에서 언급 한 것처럼 거의 실패하지 않습니다. Powershell 또는 dotnet은 TCP 연결의 정리를 수행하며이 정리를 트리거하는 것은 무엇입니까? 왜 이것이 더 자주 실패하지 않는지 궁금해지기 시작합니다. – Lars