示例#1
0
        protected bool CreateMessage(MessageDescription message, int messageIndex, out Message wsdlMessage)
        {
            wsdlMessage = null;
            bool flag = true;

            if (this.ExportedMessages.WsdlMessages.ContainsKey(new MessageDescriptionDictionaryKey(this.contractContext.Contract, message)))
            {
                throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.ServiceModel.SR.GetString("MultipleCallsToExportContractWithSameContract")));
            }
            TypedMessageKey     key  = null;
            OperationMessageKey key2 = null;

            if (message.IsTypedMessage)
            {
                key = new TypedMessageKey(message.MessageType, this.operation.DeclaringContract.Namespace, this.GetExtensionData());
                if (this.ExportedMessages.TypedMessages.TryGetValue(key, out wsdlMessage))
                {
                    flag = false;
                }
            }
            else if (this.operation.OperationMethod != null)
            {
                key2 = new OperationMessageKey(this.operation, messageIndex);
                if (this.ExportedMessages.ParameterMessages.TryGetValue(key2, out wsdlMessage))
                {
                    flag = false;
                }
            }
            System.Web.Services.Description.ServiceDescription serviceDescription = this.contractContext.WsdlPortType.ServiceDescription;
            if (flag)
            {
                wsdlMessage      = new Message();
                wsdlMessage.Name = this.GetMessageName(message);
                serviceDescription.Messages.Add(wsdlMessage);
                if (message.IsTypedMessage)
                {
                    this.ExportedMessages.TypedMessages.Add(key, wsdlMessage);
                }
                else if (key2 != null)
                {
                    this.ExportedMessages.ParameterMessages.Add(key2, wsdlMessage);
                }
            }
            this.contractContext.GetOperationMessage(message).Message = new XmlQualifiedName(wsdlMessage.Name, wsdlMessage.ServiceDescription.TargetNamespace);
            this.ExportedMessages.WsdlMessages.Add(new MessageDescriptionDictionaryKey(this.contractContext.Contract, message), wsdlMessage);
            return(flag);
        }
        protected bool CreateMessage(MessageDescription message, int messageIndex, out WsdlNS.Message wsdlMessage)
        {
            wsdlMessage = null;
            bool isNewMessage = true;

            if (ExportedMessages.WsdlMessages.ContainsKey(new MessageDescriptionDictionaryKey(contractContext.Contract, message)))
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.MultipleCallsToExportContractWithSameContract)));

            TypedMessageKey typedMessageKey = null;
            OperationMessageKey messageKey = null;
            if (message.IsTypedMessage)
            {
                typedMessageKey = new TypedMessageKey(message.MessageType, operation.DeclaringContract.Namespace, this.GetExtensionData());
                if (ExportedMessages.TypedMessages.TryGetValue(typedMessageKey, out wsdlMessage))
                    isNewMessage = false;
            }
            else if (operation.OperationMethod != null)
            {
                messageKey = new OperationMessageKey(operation, messageIndex);
                if (ExportedMessages.ParameterMessages.TryGetValue(messageKey, out wsdlMessage))
                    isNewMessage = false;
            }

            WsdlNS.ServiceDescription wsdl = contractContext.WsdlPortType.ServiceDescription;
            if (isNewMessage)
            {
                wsdlMessage = new WsdlNS.Message();
                wsdlMessage.Name = GetMessageName(message);
                wsdl.Messages.Add(wsdlMessage);
                if (message.IsTypedMessage)
                    ExportedMessages.TypedMessages.Add(typedMessageKey, wsdlMessage);
                else if (messageKey != null)
                    ExportedMessages.ParameterMessages.Add(messageKey, wsdlMessage);
            }

            //Add Name to OperationMessage
            WsdlNS.OperationMessage wsdlOperationMessage = contractContext.GetOperationMessage(message);
            wsdlOperationMessage.Message = new XmlQualifiedName(wsdlMessage.Name, wsdlMessage.ServiceDescription.TargetNamespace);
            this.ExportedMessages.WsdlMessages.Add(new MessageDescriptionDictionaryKey(contractContext.Contract, message), wsdlMessage);

            return isNewMessage;
        }
 protected bool CreateMessage(MessageDescription message, int messageIndex, out Message wsdlMessage)
 {
     wsdlMessage = null;
     bool flag = true;
     if (this.ExportedMessages.WsdlMessages.ContainsKey(new MessageDescriptionDictionaryKey(this.contractContext.Contract, message)))
     {
         throw System.ServiceModel.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.ServiceModel.SR.GetString("MultipleCallsToExportContractWithSameContract")));
     }
     TypedMessageKey key = null;
     OperationMessageKey key2 = null;
     if (message.IsTypedMessage)
     {
         key = new TypedMessageKey(message.MessageType, this.operation.DeclaringContract.Namespace, this.GetExtensionData());
         if (this.ExportedMessages.TypedMessages.TryGetValue(key, out wsdlMessage))
         {
             flag = false;
         }
     }
     else if (this.operation.OperationMethod != null)
     {
         key2 = new OperationMessageKey(this.operation, messageIndex);
         if (this.ExportedMessages.ParameterMessages.TryGetValue(key2, out wsdlMessage))
         {
             flag = false;
         }
     }
     System.Web.Services.Description.ServiceDescription serviceDescription = this.contractContext.WsdlPortType.ServiceDescription;
     if (flag)
     {
         wsdlMessage = new Message();
         wsdlMessage.Name = this.GetMessageName(message);
         serviceDescription.Messages.Add(wsdlMessage);
         if (message.IsTypedMessage)
         {
             this.ExportedMessages.TypedMessages.Add(key, wsdlMessage);
         }
         else if (key2 != null)
         {
             this.ExportedMessages.ParameterMessages.Add(key2, wsdlMessage);
         }
     }
     this.contractContext.GetOperationMessage(message).Message = new XmlQualifiedName(wsdlMessage.Name, wsdlMessage.ServiceDescription.TargetNamespace);
     this.ExportedMessages.WsdlMessages.Add(new MessageDescriptionDictionaryKey(this.contractContext.Contract, message), wsdlMessage);
     return flag;
 }