当用户名包含“@”字符时,New-WebServiceProxy 身份验证失败
New-WebServiceProxy Authentification fails when username contains a '@' character
我正在尝试使用 New-WebServiceProxy cmdlet 创建 SOAP 服务的代理,用户名包含 @
个字符:
$webAddr = 'https://MYSERVER?wsdl'
$secpasswd = ConvertTo-SecureString "MYPASSWORD" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("USER@NAME", $secpasswd)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$proxy = New-WebServiceProxy -Uri $webAddr -Credential $mycreds
不知何故,这不起作用,我收到以下错误:
New-WebServiceProxy : The request failed with HTTP status 401:
Authentification failed!.
当我将相同的代码与不带“@”字符的用户名一起使用时,代理已创建并且工作正常。当我在 Visual Studio 中添加服务引用或使用浏览器时,我还可以使用包含 @
字符和 C#
的用户名连接到服务器。
我已经尝试使用 System.Uri.EscapeUriString()
和 System.Web.HttpUtility.UrlPathEncode()
对用户名进行转义,但没有成功。
有什么想法吗?
好的,如果你告诉它没有域,它会假定 @ 是用户名的一部分:
$mycreds = New-Object System.Management.Automation.PSCredential ("\USER@NAME", $secpasswd)
添加 \ 就可以了。
我正在尝试使用 New-WebServiceProxy cmdlet 创建 SOAP 服务的代理,用户名包含 @
个字符:
$webAddr = 'https://MYSERVER?wsdl'
$secpasswd = ConvertTo-SecureString "MYPASSWORD" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("USER@NAME", $secpasswd)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$proxy = New-WebServiceProxy -Uri $webAddr -Credential $mycreds
不知何故,这不起作用,我收到以下错误:
New-WebServiceProxy : The request failed with HTTP status 401: Authentification failed!.
当我将相同的代码与不带“@”字符的用户名一起使用时,代理已创建并且工作正常。当我在 Visual Studio 中添加服务引用或使用浏览器时,我还可以使用包含 @
字符和 C#
的用户名连接到服务器。
我已经尝试使用 System.Uri.EscapeUriString()
和 System.Web.HttpUtility.UrlPathEncode()
对用户名进行转义,但没有成功。
有什么想法吗?
好的,如果你告诉它没有域,它会假定 @ 是用户名的一部分:
$mycreds = New-Object System.Management.Automation.PSCredential ("\USER@NAME", $secpasswd)
添加 \ 就可以了。