2011-05-02 194 views
1

我試圖使用使用WS安全(usernametoken,簽名和加密)的Web服務。除了wsdl外,我沒有關於網絡服務的任何信息。使用WS-Security使用SOAP Web服務

隨着wsdl.exe,我創建了我的代理類,我也能夠調用Web服務方法。它顯示錯誤

"No signature in message! (from client)"

我如何簽名和加密添加到SOAP Web服務調用?

+0

您可能想要發佈app.config和web.config以及您嘗試過的任何其他代碼。你有沒有嘗試過使用soapUI等第三方Web服務調用者? – ColWhi 2011-05-02 14:52:34

回答

1

你應該使用WCF。爲什麼? ASMX Web服務是舊技術,不支持WS-Security。要將WS-Security添加到ASMX,您必須手動執行(需要執行許多非常複雜的規範)或使用WSE。從.NET 3.0開始,ASMX和WSE都被WCF所取代,所以除非你必須使用.NET 2.0,否則你的選擇應該是WCF。

首先嚐試使用svcutil.exe或在Visual Studio中添加服務引用,如果它不爲您創建代理,則將WSDL的安全性部分發布到您的問題。我們可以嘗試幫助您進行配置。

+0

嗨,你的意思是,我應該使用wcf客戶端來使用web服務?我會嘗試使用svcutil.exe ... – waldi 2011-05-02 15:27:22

+0

是的WCF只是較新的技術來創建或使用服務。 – 2011-05-02 15:35:06

+0

我曾嘗試svcutil.exe的,不幸的是我得到一個錯誤 「錯誤:無法導入WSDL:portType的 詳細信息:System.Se rviceModel.Description.DataContractSerializerMessageContractImporter 錯誤:在運行一個WSDL進口延期已引發異常:模式與目標命名空間 '' 庫侖 ð找不到 XPath來錯誤源:// WSDL:定義[@的targetNamespace = ' ']/WSDL:portType的[@名稱=' ']」 我認爲如果名稱空間url無法訪問,則會發生錯誤!?與wsdl.exe我沒有任何錯誤。 有沒有另一種方法來創建wcf客戶端? – waldi 2011-05-02 15:46:49

0

如果你想使用WS-Security,你需要WCF。

WSE是來自Microsoft的臨時「附加」軟件包,它支持第一版Web服務堆棧上的WS-Security - 使用WSDL.exe的軟件包。我的理解是,WSE不再受支持。