2009-11-17 53 views
1

我試過對asmx(簡單的web服務)工作正常,但對於WCf我們需要做一些不同的事情。WCF + WebClient + Powershell

可以爲WCF服務工作,因爲我也得到了WCF服務的錯誤。 我剛剛在.net中創建了簡單的WCF服務並嘗試訪問。但沒有成功。

錯誤:

$Url = "http://localhost:4637/WCFService2/Service.svc" 

$webclient = new-object System.Net.WebClient 

$soapMessage = @" 
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> 
    <soap:Header/> 
    <soap:Body> 
     <tem:GetData> 
     <!--Optional:--> 
     <tem:value>hji</tem:value> 
     </tem:GetData> 
    </soap:Body> 
</soap:Envelope> 
"@ 
$webclient.headers.Add("SOAPAction","http://localhost:4637/WCFService2/Service.svc/GetData") 
$webclient.headers.Add("Content-Type", "text/xml; charset=utf-8") 

$result = ([XML]$webclient.UploadString($Url, $soapMessage))#.envelope.body.GetWeatherByPlaceNameResponse.GetWeatherByPlaceNameResult 

$result 
+0

如果您能向我們顯示實際的錯誤,這將是有用的。我最初的猜測是電話會失敗,因爲你的服務期望認證通話,而你的PS客戶端代碼正在進行非真實呼叫。 – 2009-11-17 06:30:54

+0

它給了我錯誤415. – 2009-11-18 14:58:13

+0

任何最終解決方案與完整的源代碼? – Kiquenet 2013-03-15 10:24:48

回答

1

你真的想在SOAP包手動填寫併發送?如果沒有,那麼假設你正在運行PowerShell 2.0,請在New-WebServiceProxy上執行Get-Help。此cmdlet將創建可直接編程的代理對象。

+0

我能夠通過代理獲取New-WebServiceProxy,但是爲了訪問我所需要的方法,將通過其他服務創建的LoginToken作爲標頭或cookie來訪問服務的方法。所以我現在主要關心的是現在如何將這個認證令牌(Encrtpted token)傳遞給服務。 我的令牌看起來像「LogCert = 534635336bsdvshsg」。 對於SOAP UI,我只是將它作爲cookie傳遞給標題。 – 2009-11-18 13:46:53

+0

執行$ proxy | Get-Member並查看是否有任何與設置安全令牌相關的成員。 – 2009-11-18 16:59:21

+0

我得到的方法,但得到我需要通過頭部安全令牌的方法的響應。所以當我使用New-WebServiceProxy時,我將如何傳遞標題。 – 2009-11-19 05:00:26