具有自定义SOAP标头的WCF与操作级别的WSDL生成

时间:2014-12-31 14:30:02

标签: .net wcf soap wsdl

我实现了一种操作行为,它在自定义SOAP消息头中读取/写入一些超出范围的信息。通过在行为类中实现IWsdlExportExtension,我还想改变Web服务的WSDL描述,以便重新定义这些自定义。

public class BulkOperationAttribute : Attribute, IOperationBehavior, IWsdlExportExtension
{
    // ...

    public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context)
    {
        // _OperationDescription has been remembered in ApplyDispatchBehavior...
        foreach ( MessageDescription operationMessage in _OperationDescription.Messages )           
        {
            if ( operationMessage.Direction == MessageDirection.Input )
                BulkOperationMessageExtension.AddRequestMessageHeaderDescription(operationMessage.Headers);
            else
                BulkOperationMessageExtension.AddResponseMessageHeaderDescription(operationMessage.Headers);
                    // this extension methods creates a MessageHeaderDescription instance and adds it to the header collection...
        }
    }
}

我的问题是生成的WSDL不包含信息

有趣的是,当我将WSDL生成代码移动到合同行为类时,它按预期工作。不幸的是,这非常麻烦 - 每次我在操作级别使用[BulkOperation]时,我都需要修饰服务合同。

该问题简要提及here,但没有任何更深入的解释。

我的问题:您是否知道在操作行为级别生成自定义标头WSDL的任何解决方法?

0 个答案:

没有答案