0

我希望你能帮助我。我正在尝试连接到第 3 方 Web 服务,不幸的是它是 WSE 2.0 服务。我正在尝试使用 WCF 在 C# .NET 4.0 中编写客户端。我根本找不到任何关于此的信息。该服务需要一个字符串作为用户名和密码。这是他们的样本的样子

Using webServiceObject As Microsoft.Web.Services2.WebServicesClientProtocol = New WSOData.Webservices.TransactionWebService()
https = ConcatenateWebserviceAddress(request.Server.Https, request.Service.Extension)
epr = New EndpointReference(New Uri(https))
webServiceObject.Destination = epr

Dim WebserviceContext As SoapContext = webServiceObject.RequestSoapContext

''''' Set the security settings
 ' Set the timeout value for how long issued SecurityContextToken security tokens are valid
WebserviceContext.Security.Timestamp.TtlInSeconds = -1

'Instantiate a new UsernameToken object.
Dim userNameToken As New UsernameToken(userName, password, PasswordOption.SendHashed)

'Add the token to the SoapContext.
WebserviceContext.Security.Tokens.Add(userNameToken)

'Generate a signature using the username token, and add the signature to the SoapContext.
 WebserviceContext.Security.Elements.Clear()
 WebserviceContext.Security.Elements.Add(New MessageSignature(userNameToken))

有没有办法在 .NET 4.0 中使用 WCF 来实现这一点?如果可以的话,我真的不想求助于使用 WSE 2.0。我也无法控制我们连接的服务。任何帮助将不胜感激,我绝不是 WCF 专家或新手。

提前致谢

4

2 回答 2

1

从理论上讲,您可能可以创建正确的扩展和行为来让 WCF 生产和使用 WSE 2.0 肥皂,但在这里您只能靠自己。WSE 3.0 和 WCF 之间存在一些互操作,如本博文中所述。您可以将其作为尝试使用 WSE 2.0 服务的起点。

如果您能找到 Visual Studio 2003 的副本,您最好直接使用原始 WSE 2.0 组件。我依稀记得 WSE 2.0 有 3个不向后兼容的服务包,因此您应该确保匹配正确的服务包. 祝你好运和最良好的祝愿!!:)

于 2012-04-13T20:06:54.973 回答
0

我不建议您使用 WSE2。在更糟糕的情况下——Wcf 无法与此服务互操作——你最好自己创建用户名标头,这并不难。但要确定最佳方法,请发布完整的工作肥皂样品(供应商应提供一个)

于 2012-04-13T21:23:30.693 回答