【问题标题】:HTTPListerner not responding to while statementHTTPListerner 没有响应 while 语句
【发布时间】:2017-08-11 00:45:02
【问题描述】:

我正在创建一个 HTTPListener,它将使用 POST 到脚本正在侦听的 URI 的数据执行一些代码:

$timeout = New-Timespan -Minutes 10
$sw = [Diagnostics.Stopwatch]::StartNew()
$listener = New-Object System.Net.HttpListener
$listener.Prefixes.Add('http://+:8912/') 

while ($sw.elapsed -lt $timeout) {
  $listener.Start()
  $context = $listener.GetContext() 
  $request = $context.Request
  $response = $context.Response

  $InputStream = New-Object System.IO.StreamReader $Context.Request.InputStream
  # $msg = $InputStream.ReadToEnd() | ConvertFrom-Json

  if ($request.Url -match '/post$') { 
    $response.ContentType = 'application/json'
    # $msg | Write-Output
    $message = "Message Received"
    $raw = $InputStream.ReadToEnd() 
    $raw | Write-Output
    $raw | Out-file -FilePath C:\msg.json 
  }

  if ($request.Url -match '/end$') { break }

  [byte[]] $buffer = [System.Text.Encoding]::UTF8.GetBytes($message)
  $response.ContentLength64 = $buffer.Length
  $output = $response.OutputStream
  $output.Write($buffer, 0, $buffer.Length)
  $output.Close()
}
$listener.Stop()

我遇到的问题是即使$sw.elapsed -lt $timeout$false,侦听器也不会终止并继续脚本。

有没有办法让监听器在 10 分钟后终止并继续执行脚本?

【问题讨论】:

  • 我只是使用一个计数器并包含一个 IF 语句来捕获计数器超过特定限制,如果这是真的使用break 语句来跳出循环。
  • 出于调试目的打印 $sw.elapsed 以及 $timeout 以及 $sw.elapsed -lt $timeout 的结果,以便更好地了解循环中发生的情况。
  • @user4317867 你能举个例子吗?我对此进行了测试,它仍然不会打破循环..

标签: .net json powershell httplistener system.net


【解决方案1】:

这是脚本块的一部分,但这个概念适用于我的情况。在我的测试中,我需要exit,因为这个脚本块在运行空间中运行。

do{$counter++

Start-Sleep -Seconds 1
 IF($counter -ge 600){#"Waited too long"
        [PsCustomObject]@{
             "Server" =  $server
             "Status" = "FailedToReboot!"
          }#end custom logging object
        exit
  }#end if.
 }#end do loop.
until (-not (Test-Connection -ComputerName $server -Count 1 -Quiet))

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2012-07-23
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2016-02-29
    • 2014-03-19
    相关资源
    最近更新 更多