自定义的WDSL生成
本文关键字:生成 WDSL 自定义 | 更新日期: 2023-09-27 17:55:04
我花了几个小时尝试在wsdl生成中进行一些定制,但没有结果。我被卡住了,主要是因为我找不到一个明确的样本,我想做什么(我可能错过了一些东西)。
让我们切入正题:我想要定制生成的WSDL 。我找到的最相关的文章是关于向现有服务添加属性以添加行为的,比如本文。我想做的是能够分析OperationContract,并在需要时生成和额外的xsd。
我的问题是:
- 如何在不添加属性的情况下添加或拦截现有的WSDL生成 ?
- 如何在配置文件中配置该组件
我不想改变元数据被svcutil.exe使用的方式,只是在生成的wsdl中添加一些ComplexType 'on- fly'。
谢谢你的建议
您需要的是实现IWsdlExportExtension.ExportContract
,但文档明确指出:
ExportContract方法被调用当元数据导出系统为导出合同。只有合同运营行为实施IWsdlExportExtensionExportContract电话。所有的行为实现IWsdlExportExtension get
对我来说,这意味着这个方法只在契约或操作行为实现时被调用,这些行为通常由自定义属性定义,但你也应该能够在自定义初始化中分配这些行为。下面是从配置文件配置的端点的WSDL扩展示例(配置只提供整个服务和端点的行为)。我相信(但没有测试)你可以做类似的扩展,它将包括:
- 操作或合同行为实现
IWsdlExportExtension
和ExportContract
- 端点行为,将实现
IEndpointBehavior
和ApplyDispatchBehavior
。在ApplyDispatchBehavior
中,您将使用serviceEndpoint.Contract.Behaviors
添加契约行为或serviceEndpoint.Contract.Operations[x].Behaviors
添加操作行为。 - 您将创建类似的
BehaviorExtensionElement
,用于从配置文件中定义新的端点行为。