簡體   English   中英

WCF - 定制 WDSL 生成

[英]WCF - Customized WDSL generation

我花了幾個小時嘗試在 wsdl 一代中進行一些自定義,但沒有結果。 我陷入困境主要是因為我找不到我想做的明確示例(我可能錯過了一些東西)。

言歸正傳:我要自定義生成的WSDL。 我發現的最相關的文章是關於向現有服務添加屬性以添加行為,例如這篇文章

我想要做的是能夠分析OperationContract並在需要時生成和附加 xsd。

我的問題是:

  • 如何在不添加屬性的情況下添加或攔截現有的 WSDL 代?
  • 如何在配置文件中配置此組件?

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

感謝您的建議!

您需要的是實施IWsdlExportExtension.ExportContract文檔明確指出:

當元數據導出系統正在導出合同時,會調用 ExportContract 方法。 只有實現 IWsdlExportExtension 的合約和操作行為才能獲得 ExportContract 調用。 所有實現 IWsdlExportExtension 的行為都會得到 ExportEndpoint 調用。

對我來說,這意味着該方法僅在由通常由自定義屬性定義的合同或操作行為實現時調用,但您也應該能夠在自定義初始化中分配這些行為。 這是從配置文件配置的端點的 WSDL 擴展示例(配置僅提供整個服務和端點的行為)。 我相信(但沒有測試)你可以做類似的擴展,其中包括:

  • 操作或合同行為實現IWsdlExportExtensionExportContract
  • 將實現IEndpointBehaviorApplyDispatchBehavior的端點行為。 ApplyDispatchBehavior ,您將使用serviceEndpoint.Contract.Behaviors添加合同行為或使用 serviceEndpoint.Contract.Operations serviceEndpoint.Contract.Operations[x].Behaviors添加操作行為。
  • 您將創建類似的BehaviorExtensionElement用於從配置文件定義新的端點行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM