【问题标题】:Generated wsdl file contains strange message names. WCF生成的 wsdl 文件包含奇怪的消息名称。 WCF
【发布时间】:2015-09-24 12:19:09
【问题描述】:

在生成的 wsdl 文件(来自 WCF 服务)中有一个奇怪的名称模板(可能只对我来说)。例如描述方法的部分:

<wsdl:message name="InterfaceName_MethodName_InputMessage">
    <wsdl:part name="parameters" element="tns:MethodName"/>
</wsdl:message>

如何强制 WCF 不生成 InterfaceName 前缀和 InputMessage 后缀? OutputMessage 的情况也是如此。我希望 wsdl 如下所示:

<wsdl:message name="MethodName">
    <wsdl:part name="parameters" element="tns:MethodName"/>
</wsdl:message>

【问题讨论】:

    标签: c# .net wcf wsdl


    【解决方案1】:

    您可以使用 MessageContract 更改消息元素。假设您在界面中的方法如下所示:

    <OperationContract>
    Function methodName(param as String) as Integer
    

    那你必须改成:

    <OperationContract>
         Function methodName(param As messageInput) As mesageOutput
    

    添加这些类:

    <MessageContract()> _
        Public Class messageInput
    
        Private input1 As String
    
        <DataMember(Name:="input")> _
        Public Property input() As String 
            Get
                Return Me. input1
            End Get
            Set(ByVal value As String)
                Me. input1 = value
            End Set
        End Property
    
    End Class
    
    <MessageContract()> _
    Public Class mesageOutput
    
        Private return1 As Integer
    
        <DataMember(Name:="return")> _
        Public Property return() As Integer
            Get
                Return Me. return1
            End Get
            Set(ByVal value As Integer)
                Me. return1 = value
            End Set
        End Property
    
    End Class
    

    现在您的消息元素已更改为:

    <wsdl:operation name="methodName">
        <wsdl:input message="messageInput"/>
        <wsdl:output message="messageOutput"> 
    </wsdl:operation>
    

    编辑1:

    要更改方法名称和操作属性,请在界面中执行此操作:

    <OperationContractAttribute(Action:="actionName", name:="manipulateMethodName" ReplyAction:="actionResonseName")> _
    Function methodName(param As messageInput) As mesageOutput
    

    【讨论】:

    • naro,您的解决方案对我帮助很大,但我还有一个问题。有没有办法从输入/输出操作参数中删除 nameAction 属性?
    • 是的,您可以更改它。见编辑1。
    • 我的意思是别的。我不想改变这些属性的价值。我想完全删除它们,
    • 不幸的是它不起作用。在使用 wsdl 文件时,我收到以下错误:“ServiceContract 最多可以有一个操作,Action = “*”。”。也许我应该尝试使用 WSDL 导出扩展...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多