【问题标题】:How to convince WCF Data Contract Serializer that a WSDL is doc/lit/wrapped如何说服 WCF Data Contract Serializer WSDL 是 doc/lit/wrapped
【发布时间】:2012-06-01 21:04:19
【问题描述】:

我已尝试遵循 http://blogs.msdn.com/b/donsmith/archive/2006/10/06/handcrafting-wcf_2d00_friendly-wsdls.aspx 的指导来创建 WCF svcutil 认为是文档/文字包装格式的 WSDL。这样做时,svcutil 应该在 C# 中生成一个服务接口和代理代码,该代码使用数据协定序列化程序,以及包装器操作上的 OperationContractAttributes。相反,我得到了一个奇怪的双重包装,其中 BlahResponse1 类嵌套在 BlahResponse 类中,svcutil 告诉我 WSDL 没有被包装,它将创建 MessageContracts 而不是 OperationContracts。

为了服务使用者的代码可读性,我想去掉 BlahResponse1 类,并让 svcutil 相信 WSDL 已包装。如何做到这一点?也许还有,一个是怎么做到的?

我已经看到建议在架构中的一些但不是所有元素上设置 nillable="true" ,这些元素将成为数据契约。哪个应该是可空的,为什么?是否需要有不可为 nillable 的元素,设置 nillable="true" 是不好的?

我尝试按照上面链接的建议将架构划分为两个命名空间,但这似乎不起作用(或者被另一个问题掩盖了)。关于模式命名空间、导入与包含以及声明顺序有什么重要的吗?

我会包括架构/WSDL,但它们是专有的。此外,它非常大并且分布在许多文件中。

【问题讨论】:

    标签: wcf svcutil.exe contract-first


    【解决方案1】:

    XMLSpy 使用默认名称“参数”创建消息部分。这几乎是 .NET svcutil.exe 自动生成数据合约和操作合约所需的内容。 Svcutil.exe 需要将所有消息部分命名为“参数”(注意末尾添加的“s”)。

    【讨论】:

    • 此外,任何可以转换为 .NET 引用类型的东西都必须在架构定义的元素声明中具有 nillable=true 属性。这包括在架构中重用以定义本地元素、字符串等的任何 complexType。它不包括整数、布尔值、字节等。有关类型的更多信息,请参见此处:stackoverflow.com/questions/1658985/…
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多