我尝试按照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,但它们是专有的。此外,非常大并且分布在许多文件中。