为什么此powershell脚本会发出两个web请求(System.Net.HttpWebRequest)?

为什么此powershell脚本会发出两个web请求(System.Net.HttpWebRequest)?,powershell,httpwebrequest,Powershell,Httpwebrequest,根据我的服务器日志,下面的脚本似乎发出了两个web请求,而不是一个。每一次,第二次请求正好是2分钟后。我只想要一个请求。我错过了什么 # create the web request $request = [System.Net.HttpWebRequest]::Create($url) # set the timeout to 1 hour $request.Timeout = 3600000 # get the response and stream Write-Host "GetResp

根据我的服务器日志,下面的脚本似乎发出了两个web请求,而不是一个。每一次,第二次请求正好是2分钟后。我只想要一个请求。我错过了什么

# create the web request
$request = [System.Net.HttpWebRequest]::Create($url)
# set the timeout to 1 hour
$request.Timeout = 3600000

# get the response and stream
Write-Host "GetResponse() start"
$response = $request.GetResponse()
Write-Host "GetResponse() done"

Write-Host "GetResponseStream() start"
$stream = $response.GetResponseStream()
Write-Host "GetResponseStream() end"

# read the stream
Write-Host "Read stream start"
$reader = New-Object IO.StreamReader($stream)
$html = $reader.ReadToEnd()
Write-Host "Read stream end"

# output the html response
Write-Host $html

# clean up resources
$reader.Close()
$stream.Close()
$response.Close()

Write-Host "Done"

这不是一种回应,而是一种帮助

我在PowerGuy中复制/跳过您的PowerShell代码,并用“”初始化$url。 然后我在我的计算机上启动WireShark(一个开源嗅探器)。你会发现,在这里的捕获

它只显示一个答案/响应。我抑制了其他帧,但我收到了来自谷歌的“心跳”,没有其他东西,我等待了超过2分钟

再一次,这不是答案,而是回应的要素。您可能必须尝试从安装WireShark的虚拟机启动脚本

我可以做更多的测试,如果你给我你的服务器的URL,服务器类型和技术

我希望有帮助


JP

这个脚本需要多长时间才能执行?为了避免请求的网页出现超时问题,我使用线程池启动了一个新线程来处理时间密集型内容。ps脚本现在运行得非常快,只发出一个web请求。不过我还是很好奇。您的服务器是否在第一个webrequest上发出重定向(301302)响应?这将解释您看到的两个请求。请求中没有重定向。这就好像请求超时然后重试操作一样。感谢您提供的信息。服务器URL不是公共的,但感谢您提供测试。当我有机会的时候,我会再试试WireShark。