我花了好几个小时尝试在wsdl生成中进行一些自定义,没有结果。 我被困了主要是因为我找不到一个明确的样本我想做什么(我可能错过了一些东西)。
让我们谈谈:我想自定义生成的WSDL。 我发现的最相关的文章是关于向现有服务添加属性以添加行为like this article。
我想要做的是能够分析 OperationContract ,并在需要时生成和附加xsd。
我的问题是:
我不想改变 svcutil.exe 消耗元数据的方式,只需在生成的wsdl中添加一些ComplexType'即时'。
感谢您的建议!
答案 0 :(得分:5)
您需要的是实施IWsdlExportExtension.ExportContract
,但the documentation明确指出:
调用ExportContract方法 当元数据导出系统是 出口合同。只有合同 和实施的操作行为 IWsdlExportExtension得到了 ExportContract调用。所有行为 实现IWsdlExportExtension get ExportEndpoint调用。
对我而言,这意味着只有在通过自定义属性定义的合同或操作行为实现时才调用此方法,但您也应该能够在自定义初始化中分配这些行为。从配置文件配置的端点的WSDL扩展Here is the example(配置仅提供整个服务和端点的行为)。我相信(但没有测试它)你可以做类似的扩展,包括:
IWsdlExportExtension
和ExportContract
IEndpointBehavior
和ApplyDispatchBehavior
的端点行为。在ApplyDispatchBehavior
中,您将使用serviceEndpoint.Contract.Behaviors
添加合同行为,或使用serviceEndpoint.Contract.Operations[x].Behaviors
添加操作行为。BehaviorExtensionElement
,用于从配置文件中定义新的端点行为。