大家好,
当我运行以下Statement时,它会在生产环境中抛出400 Bad Request错误,但在我的本地环境中运行正常。 $ uri(url)在两种情况下都不同,但执行相同的任务。
Invoke-WebRequest -UseBasicParsing -Header $headers -ContentType 'Application/xml' -METHOD POST -BODY $postParams -Uri $uri
它返回400 Bad Request
Invoke-WebRequest : The remote server returned an error: (400) Bad Request.
At C:\script.ps1:107 char:14
+ ... resultRun = Invoke-WebRequest -Header $headers -ContentType 'Applicat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
我尝试捕获异常,使用以下内容:
try {
Invoke-WebRequest -UseBasicParsing -Header $headers -ContentType 'Application/xml' -METHOD POST -BODY $postParams -Uri $uri
}
catch {
echo '### Inside catch ###'
$ErrorMessage = $_.Exception.Message
echo '## ErrorMessage ##' $ErrorMessage
$FailedItem = $_.Exception.ItemName
echo '## FailedItem ##' $FailedItem
$result = $_.Exception.Response.GetResponseStream()
echo '## result2 ##' $result
$reader = New-Object System.IO.StreamReader($result)
echo '## reader ##' $reader
$responseBody = $reader.ReadToEnd();
echo '## responseBody ##' $responseBody
}
返回以下结果
### Inside catch ###
ErrorMessage:
The remote server returned an error: (400) Bad Request.
FailedItem :
result2:
CanTimeout : True
ReadTimeout : -1
WriteTimeout : -1
CanRead : True
CanSeek : True
CanWrite : True
Capacity : 286
Length : 286
Position : 0
reader :
CurrentEncoding : System.Text.UTF8Encoding
BaseStream : System.Net.SyncMemoryStream
EndOfStream : False
responseBody:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Response><ResponseStatus><Status>FAILURE</Status><Messages><Message><Code>400</Code><Type>INVALID DATA</Type><Text>Please see the log for more details</Text></Message></Messages></ResponseStatus></Response>
以上异常结果未提供相关信息。
同一个Invoke-WebRequest调用在一台服务器上工作正常但在另一台服务器上出现故障时失败。
各个服务器上出现此错误的原因可能是什么?
在我看来,代码很好但在与生产服务器建立连接时出了问题。但是不确定我们需要遵循哪些故障排除步骤?
提前致谢。