与使用 C# 相比,我通过 PowerShell 连接到服务的问题是该服务需要在标头中传递一个密钥。
我可以使用new-WebServiceProxy
URI 并让它传递默认凭据。这样我就可以拿到限时服务密钥了,但是对于后续的服务调用,没有办法传递密钥,导致报错没有有效的服务密钥。
我知道 cmdlet 使用System.Net.WebClient
该类,并且它有一个我想尝试使用的可设置 headers 属性。我似乎无法让该类以与 cmdlet 相同的方式运行并返回一个对象。有谁知道怎么做?
这就是我正在使用的,但可以直接从 PowerShell 在 .Net 中实现:
$QMSService = New-WebServiceProxy -Uri http://localhost:4799/QMS/Service -Namespace QlikViewServer -UseDefaultCredential
那是我用来访问服务的 Powershell cmdlet。我想使用以下方法完成相同的操作:
$Client = New-Object System.Net.WebClient
$Client.UseDefaultCredentials = $true
$Client.BaseAddress = "http://localhost:4799/QMS/Service"
我只是不知道如何使用 System.Net.WebClient 创建一个代理对象,让我可以访问该服务提供的所有成员。设置好之后,我可以获取 TimeLimitedServiceKey 并执行以下操作:
$ServiceKey = $ProxyObjectCreatedFromClient.GetTimeLimitedServiceKey()
$Client.Headers = "X-Service-Key", $ServiceKey
如果有人可以帮助我如何创建代理对象。