更改WCF wsdl中的默认消息名称

更改WCF wsdl中的默认消息名称,wcf,Wcf,我已经使用DataContract创建了一个WCF服务应用程序,该服务正在生成自己的默认消息名。Java客户端正在使用我的服务,我必须去掉这些默认消息名,因为这会导致基于这些长名称生成Java代理类 wsdl:messagename=“MyService-v1-1\u登录\u输入消息”“ wsdl:partname=“parameters”element=“tns:Login” wsdl:消息 wsdl:messagename=“MyService-v1-1\u Login\u OutputMe

我已经使用DataContract创建了一个WCF服务应用程序,该服务正在生成自己的默认消息名。Java客户端正在使用我的服务,我必须去掉这些默认消息名,因为这会导致基于这些长名称生成Java代理类

wsdl:messagename=“MyService-v1-1\u登录\u输入消息”

wsdl:partname=“parameters”element=“tns:Login”

wsdl:消息

wsdl:messagename=“MyService-v1-1\u Login\u OutputMessage

wsdl:partname=“parameters”element=“tns:LoginResponse”

wsdl:消息

wsdl:messagename=“MyService-v1-1\u登录\u服务故障\u故障消息”


wsdl:part name=“detail”element=“tns:ServiceFault”

您可以使用IWsdlExportExtension来控制此操作。请参见msdn上的示例:

相关代码

            // Get parameter information.
            ParameterInfo[] args = op.SyncMethod.GetParameters();
            for (int i = 0; i < args.Length; i++)
            {
              object[] docAttrs 
                = args[i].GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
              if (docAttrs.Length != 0)
              {
                // <param name="Int1">Text.</param>
                XmlElement newParamElement = opOwner.CreateElement("param");
                XmlAttribute paramName = opOwner.CreateAttribute("name");
                paramName.Value = args[i].Name;
                newParamElement.InnerText 
                  = ((WsdlParameterDocumentationAttribute)docAttrs[0]).ParamComment;
                newParamElement.Attributes.Append(paramName);
                operation.DocumentationElement.AppendChild(newParamElement);
              }
            }
//获取参数信息。
ParameterInfo[]args=op.SyncMethod.GetParameters();
for(int i=0;i
是否设置了名称等属性属性?是。。下面是我的服务界面[OperationContract(Name=“Login”)][FaultContract(typeof(ServiceFault),Name=“ServiceFault”)][return:MessageParameter(Name=“LoginRequest”)]UserAuthenticationToken登录([MessageParameter(Name=“LoginResponse”)]LoginRequest LoginRequest);但是仍然对我生成的wsdlSee没有影响请参见此处:是否有一个示例说明如何使用这个实现IWsdlExportExtension接口的类。我已根据链接创建了一个类,并尝试将其用作我的服务合约中的属性,但没有影响。是否有其他方法指定您应该在“端点、协定或操作行为”上实现的属性。在属性上我不确定。