C# SOAP服务调用-获取元素的非法请求格式时出错
我们正在集成来自第三方的服务。他们最近升级了他们的服务,现在有了新的wsdl,我不断得到“元素的非法请求格式” 根据我的调查,问题似乎在于添加到主元素上的xmlns。如果我使用SOAPUI并从main元素中删除xmlns,它会工作,但是visualstudio会根据wsdl中定义的内容自动添加它 有趣的是,在他们以前的wsdl中,服务与包含的xmlns一起工作,只有在新的wsdl中才会抛出异常 就wsdl而言,我所知道的是,他们使用JD 12并手动创建了wsdl,但是经过比较,它看起来与旧的wsdl相似,xmlns中的名称是唯一的区别 这是visual studio创建的请求:C# SOAP服务调用-获取元素的非法请求格式时出错,c#,service,wsdl,C#,Service,Wsdl,我们正在集成来自第三方的服务。他们最近升级了他们的服务,现在有了新的wsdl,我不断得到“元素的非法请求格式” 根据我的调查,问题似乎在于添加到主元素上的xmlns。如果我使用SOAPUI并从main元素中删除xmlns,它会工作,但是visualstudio会根据wsdl中定义的内容自动添加它 有趣的是,在他们以前的wsdl中,服务与包含的xmlns一起工作,只有在新的wsdl中才会抛出异常 就wsdl而言,我所知道的是,他们使用JD 12并手动创建了wsdl,但是经过比较,它看起来与旧的ws
1.x
使用“xmlns=”http://gna160ws/Management.wsdl/types/""问题出在哪里?
答复:
gna160.萃取剂
1200
ExtractAccateGelement的请求格式非法。
当提交相同的请求,但没有xmlns时,我得到了一个有效的响应。例如:
1.x
答复:
0
成功
gna160pkg.extractaccateg
1.
A.
AAA
另外,如果我在xmlns之后添加一个限定符,那么它也可以工作??
例如:
xmlns:hello=”http://gna160ws/Management.wsdl/types/"
我一直在与开发人员合作,但我们还没有发现问题
如果有人能帮助我或为我指出正确的方向,我们将不胜感激。您是否用新的WSDL更新了您的服务引用 或者,您可以从Rick Strahl处尝试此操作:重写以下函数以添加自定义命名空间
protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer)
{
writer.WriteStartElement("soapenv", "Envelope", "http://schemas.xmlsoap.org/soap/envelope/");
writer.WriteAttributeString("xmlns", "oas", null, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
writer.WriteAttributeString("xmlns", "v2", null, "http://www.royalmailgroup.com/api/ship/V2");
writer.WriteAttributeString("xmlns", "v1", null, "http://www.royalmailgroup.com/integration/core/V1");
writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
writer.WriteAttributeString("xmlns", "xsd", null, "http://www.w3.org/2001/XMLSchema");
}
对于他的完整文章是的,我确实更新了服务参考。感谢您提出上述答案,但是我有多个不同的服务,上面的内容不会影响对不同服务的所有请求吗?此外,我不知道上面的内容是否有效,因为我需要从元素中完全删除xmlns,或者在xmlns后面添加一个限定符,如:name