2012-12-11 74 views
1

我使用PowerShell New-WebServiceProxy命令行程序獲取與WebService(WCF/SOAP)的連接。可以連接到WebService,但是當我想要執行一個方法時,我會拒絕訪問。訪問被拒絕是因爲WebService需要自定義消息頭。但是這對於New-WebServiceProxy是不可能的。PowerShell和Webservice - 添加標頭

問題:什麼是最簡單的方式來連接/使用WebService並添加消息頭?是否有PowerShell示例腳本? (我喜歡的語言是PowerShell的在這種情況下)

BTW:是的,我知道有非常相似,我的一個問題:Add custom SOAP header in PowerShell using New-WebServiceProxy

預先感謝您!

回答

2

這是更多的解決方法,但它可能適用於您。而不是使用cmdlet,創建一個C#或VB.NET項目,添加WCF服務引用,因爲它打算使用。然後創建一個類,該類爲每個要調用的服務方法提供一個方法,並公開您需要在PowerShell中使用的參數。

class MyProxy 
{ 
    public string Url { get; set; } 
    public string SomeParameterForTheHeader { get; set; } 

    public string CallSomeMethod(string input1, string input2) 
    { 
     // create WCF context using this.Url 
     // create MessageHeader using this.SomeParameterForTheHeader and add it to the context 
     // call SomeMethod on the context using input1 and input2 
    } 
} 

編譯它並在您的PowerShell腳本中使用程序集和類。

[System.Reflection.Assembly]::LoadWithPartialName("MyAssembly") > $null 
$ref = New-Object MyNamespace.MyProxy() 
$ref.Url = "http://..." 
$ref.SomeParameterForTheHeader = "your value here" 
$ref.CallSomeMethod("input1", "input2") 
+0

非常好的主意:-) – LaPhi