WCF - 自定义WDSL生成

Mos*_*ose 4 c# wcf wsdl svcutil.exe operationcontract

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

让我们谈谈:我想自定义生成的WSDL.我发现的最相关的文章是关于向现有服务添加属性以添加行为,如本文所述.

我想要做的是能够分析OperationContract并生成和附加的xsd(如果需要).

我的问题是:

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

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

谢谢你的建议!

Lad*_*nka 5

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

当元数据导出系统导出合同时,将调用ExportContract方法.只有实现IWsdlExportExtension的合同和操作行为才能获得ExportContract调用.实现IWsdlExportExtension的所有行为都会获得ExportEndpoint调用.

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

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