2017-04-03 146 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

これは興味深いことです。 1つのフォローアップの質問、現在のスクリプトは少なくとも50のinvoke-webrequestを作成し、私が元の投稿で言及したように、ほとんど失敗しません。 PowershellやドットネットはTCP接続のクリーンアップを実行しますか?このクリーンアップを引き起こすのは何ですか?なぜこれがより頻繁に失敗しないのか疑問に思っています。 – Lars

関連する問題