gpt4 book ai didi

web-services - 如何添加 tag? WSDL 未与这些信息一起出现

转载 作者:行者123 更新时间:2023-12-02 02:16:33 26 4
gpt4 key购买 nike

我需要在我的消息中添加如下内容:

  <soap:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soap:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="unt_Z1k4LnxEmBzzKuPP">
<wsse:Username>user</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">iNs+LF1iwwPU2AMer8uU6NKY9tfzgYqMTaP3mIEgoK0=</wsse:Nonce>
<wsu:Created>2012-04-22T11:57:30Z</wsu:Created>
</wsse:UsernameToken>
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Created>2012-04-22T11:57:30Z</wsu:Created>
<wsu:Expires>2012-04-22T11:58:30Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>

我正在调用一个返回 500 错误响应的 Web 服务,这基本上意味着它无法进行身份验证,我猜是因为我从消息中丢失了这些信息,即使消息中有身份验证 header 。这会发生吗?

如何在消息中添加 WS-Security header 并在代码中添加所有这些信息?我在 Visual Studio 中使用添加 Web 引用添加了服务。

谢谢。

最佳答案

最优雅的解决方案是一个过时的解决方案,涉及制作我用来从 .NET 3.5 调用 .NET 2.0 的类库、安装 WSE 3.0、入侵一些 VS 配置文件以使加载项工作并启用类库项目作为 WSE Enabled 项目。

Update Web Reference 生成两个代理类(例如 Myservice 和 MyServiceWse)。一个继承自 SoapHttpClient,这是 WCF 代理生成的默认设置,最新继承自 WebServicesClientProtocol。

最新的是您需要使用 WS-Security header 调用旧的 ASMX Web 服务。

剩下的很简单:

MyServiceWse client = new MyServiceWse();

UsernameToken token = new UsernameToken(userName, password, PasswordOption.SendPlainText); // or what service specs rquired, other than plaintext.

client.RequestSoapContext.Security.Tokens.Add(token);
client.RequestSoapContext.Security.Timestamp.TtlInSeconds = 60;

client.YourMethod();

对于微软在 VS 2005 之后不包含的过时 API 来说非常简单,您需要使用 Stream 和字符串操作来捕获序列化之前、序列化之后、使用扩展和其他东西的消息...

如果您有使用添加引用而不是旧的添加 Web 引用和 WSE 的解决方案来使用 WS-Security header 、UsernameToken、TimeStamp Created、Expired 等进行简单调用

请告诉我。

附言找到此问题的解决方案并使用一些有用的链接进行回答。

Consuming non-asmx SOAP 1.1 Web Service in C# with Header Security

关于web-services - 如何添加 <soap :Header> tag? WSDL 未与这些信息一起出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10263708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com