2011-05-02 134 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不再受支持。