WCF - 定制 WDSL 生成

发布于 2024-11-05 08:24:43 字数 514 浏览 5 评论 0原文

我花了几个小时尝试在 wsdl 生成中进行一些自定义,但没有结果。 我陷入困境主要是因为我找不到我想做的事情的清晰样本(我可能错过了一些东西)。

让我们进入正题:我想自定义生成的 WSDL。 我发现的最相关的文章是关于向现有服务添加属性以添加行为,像这样文章

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

我的问题是:

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

我不想更改 svcutil.exe 使用元数据的方式,只需在生成的 wsdl 中添加一些“即时”的 ComplexType 即可。

感谢您的建议!

I spent hours trying to do some customizations in the wsdl generation, without results.
I got stuck mainly because I could not find a clear sample for what I want to do (I may have missed something).

Let's got to the point : I want to customize the generated WSDL.
The most relevant articles I found are about adding attributes to existing Services to add behavior, like this article.

What I want to do is being able to analyze the OperationContract and generate and additionnal xsd if required.

My questions are :

  • How can you add or intercept existing WSDL generation without adding attributes ?
  • How do I configure this component in the config file ?

I don't want to change the way the metadata are consumed by svcutil.exe, just add some ComplexType 'on-the-fly' in the generated wsdl.

Thanks for your suggestions !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

﹂绝世的画 2024-11-12 08:24:43

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

ExportContract方法被调用
当元数据导出系统处于
导出合同。仅合同
和操作行为实施
IWsdlExportExtension 获取
导出合同调用。所有行为
实现 IWsdlExportExtension 获取
ExportEndpoint 调用。

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

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

What you need is implementing IWsdlExportExtension.ExportContract but the documentation clearly states:

The ExportContract method is called
when the metadata export system is
exporting the contract. Only contract
and operation behaviors implementing
IWsdlExportExtension get the
ExportContract call. All behaviors
implementing IWsdlExportExtension get
the ExportEndpoint call.

For me it means that this method is called only when implemented by contract or operation behavior which is usually defined by custom attribute but you should be also able to assign these behaviors in custom initialization. Here is the example of WSDL extension for endpoint configured from configuration file (configuration offers only behaviors for whole service and endpoints). I believe (but didn't test it) that you can do similar extension which will consist of:

  • Operation or Contract behavior implement IWsdlExportExtension and ExportContract
  • Endpoint behavior which will implement IEndpointBehavior and ApplyDispatchBehavior. In ApplyDispatchBehavior you will use serviceEndpoint.Contract.Behaviors to add contract behavior or serviceEndpoint.Contract.Operations[x].Behaviors to add operation behavior.
  • You will create similar BehaviorExtensionElement for defining your new endpoint behavior from configuration file.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文