gpt4 book ai didi

C# SOAP-Service 方法参数上缺少命名空间

转载 作者:行者123 更新时间:2023-12-04 17:02:00 25 4
gpt4 key购买 nike

我的网络服务用 C# 编写时遇到了问题。在我想使用参数调用方法之前,它工作正常,使用我的 wsdl 从外部供应商生成的 SOAP 请求如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://127.0.0.1/AService</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">ANameSpace/login</Action>
</s:Header>
<soapenv:Body>
<ns1:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="ANameSpace">
<a_sDMSUserName xsi:type="xsd:string">test</a_sDMSUserName>
<a_sDMSUserPassword xsi:type="xsd:string">oscar</a_sDMSUserPassword>
</ns1:login>
</soapenv:Body>
</soapenv:Envelope>

这是我的服务界面的一部分:
[ServiceContract (Namespace ="ANameSpace")]
public interface IFordEcat
{
[OperationContract (Action ="ANameSpace/connect")]
int connect();

[OperationContract(Action = "ANameSpace/disconnect")]
int disconnect();

[OperationContract(Action = "ANameSpace/login")]
string login(string a_sDMSUserName, string a_sDMSUserPassword);

[OperationContract(Action = "ANameSpace/logout")]
string logout(string a_sSessionID, string a_sDMSUserName, string a_sDMSUserPassword);

使用 SoapUI 或通过服务引用在 C# 中设置的测试客户端,它可以正常工作。

唯一的问题是登录方法或任何其他带参数的方法的参数在传递参数的节点中缺少命名空间前缀 (nsl)。例如,当我在 SOAPUi 中手动添加它们时,它就像魅力一样。有没有办法在不检查每个传入请求的情况下添加命名空间前缀?

提前谢谢了!

最佳答案

我有点不确定您为什么必须提供 Action 属性,因为 SOAP 操作可以在没有它的情况下工作。也许有线索......?

或者,如果您确实希望保留它并希望为每个请求添加命名空间,那么您可以探索 XmlDocument 类和 XmlNode 类。这里有一个简单的代码片段,它可以在特定节点添加命名空间 -

XmlDocument xdoc = new XmlDocument();

// Get Request Xml for each of the case
xdoc.LoadXml(xmlContent);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("s", "http://schemas.xmlsoap.org/soap/envelope/");
nsmgr.AddNamespace("sc", "http://tempuri.org/");

关于C# SOAP-Service 方法参数上缺少命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48946468/

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