【问题标题】:Prefix in Webservice with SOAP带有 SOAP 的 Web 服务中的前缀
【发布时间】:2011-02-25 02:20:54
【问题描述】:

我在偷这个链接:

http://es.w3support.net/index.php?db=so&id=665327

这是我需要的一部分,我使用与 SoapDocumentMethodAttribute 和 Invoke 方法相同的代码,这是我的问题。

在链接中,他们展示了如何获取带有前缀的响应,并且可以正常工作,但是与请求相关的是什么?,我需要将带有前缀的 xml 结构发送给客户端。

我尝试添加 XmlSerializerNamespaces xsn = new XmlSerializerNamespaces(); xsn.Add("mes-root", "CAP");

在调用方法之前,但不起作用

我希望有人可以帮助我,我真的很沮丧

【问题讨论】:

    标签: c# web-services serialization


    【解决方案1】:

    首先,除非您一直使用 .NET 2.0,否则您不应该使用 ASMX Web 服务或客户端进行任何新的开发。您应该使用“添加服务引用”,而不是“添加 Web 引用”。

    其次,您链接的文章是XML Serialization - Missing Namespace Prefix at client end的翻译版本。

    第三,请注意,提出该问题的人正在运行 .NET 1.1,发布了不正确的 XML,并且从未真正报告真正的问题是什么。

    最后,如果您的客户需要一个特定的前缀,那么他们的代码中就有一个致命的严重错误:这意味着他们实际上并没有使用 XML 进行通信。在 XML 中,前缀只是实际名称空间的别名。是否存在 is 前缀并不重要,更不用说实际前缀是什么了。以下都是相同的:

    <root xmlns="somenamespace"/>
    
    <a:root xmlns:a="somenamespace"/>
    
    <b:root xmlns:b="somenamespace"/>
    

    请注意,OP 遇到的实际问题是她运行的是 .NET 1.1,它在处理 XML 时存在一些错误。这个问题根本与前缀无关!

    【讨论】:

    • re: '终于',我最近与一些需要特定前缀的 Flash 开发人员合作了一个项目 - 似乎他们正在使用字符串/模式匹配而不是结构化 xml 来解析 xml。我解释了它应该如何工作,但显然这是他们使用的 Flash xml 库/框架的限制。这一切对我来说听起来很奇怪,但都是真的。事实证明,虽然您无法使用 DataContractSerializer 控制别名,但您确实可以使用 XmlSerializer 进行一些控制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多