自定义的WDSL生成

本文关键字:生成 WDSL 自定义 | 更新日期: 2023-09-27 17:55:04

我花了几个小时尝试在wsdl生成中进行一些定制,但没有结果。我被卡住了,主要是因为我找不到一个明确的样本,我想做什么(我可能错过了一些东西)。

让我们切入正题:我想要定制生成的WSDL 。我找到的最相关的文章是关于向现有服务添加属性以添加行为的,比如本文。

我想做的是能够分析OperationContract,并在需要时生成和额外的xsd。

我的问题是:

  • 如何在不添加属性的情况下添加或拦截现有的WSDL生成 ?
  • 如何在配置文件中配置该组件

我不想改变元数据被svcutil.exe使用的方式,只是在生成的wsdl中添加一些ComplexType 'on- fly'。

谢谢你的建议

自定义的WDSL生成

您需要的是实现IWsdlExportExtension.ExportContract,但文档明确指出:

ExportContract方法被调用当元数据导出系统为导出合同。只有合同运营行为实施IWsdlExportExtensionExportContract电话。所有的行为实现IWsdlExportExtension get

对我来说,这意味着这个方法只在契约或操作行为实现时被调用,这些行为通常由自定义属性定义,但你也应该能够在自定义初始化中分配这些行为。下面是从配置文件配置的端点的WSDL扩展示例(配置只提供整个服务和端点的行为)。我相信(但没有测试)你可以做类似的扩展,它将包括:

  • 操作或合同行为实现IWsdlExportExtensionExportContract
  • 端点行为,将实现IEndpointBehaviorApplyDispatchBehavior。在ApplyDispatchBehavior中,您将使用serviceEndpoint.Contract.Behaviors添加契约行为或serviceEndpoint.Contract.Operations[x].Behaviors添加操作行为。
  • 您将创建类似的BehaviorExtensionElement,用于从配置文件中定义新的端点行为。