void CreateHeaderMessages(string methodName, SoapBindingUse use, XmlMembersMapping inHeaderMappings, XmlMembersMapping outHeaderMappings, SoapReflectedHeader[] headers) { // CONSIDER, alexdej: support headerfault. if (use == SoapBindingUse.Encoded) { SoapExporter.ExportMembersMapping(inHeaderMappings, false); if (outHeaderMappings != null) { SoapExporter.ExportMembersMapping(outHeaderMappings, false); } } else { SchemaExporter.ExportMembersMapping(inHeaderMappings); if (outHeaderMappings != null) { SchemaExporter.ExportMembersMapping(outHeaderMappings); } } CodeIdentifiers identifiers = new CodeIdentifiers(); int inCount = 0, outCount = 0; for (int i = 0; i < headers.Length; i++) { SoapReflectedHeader soapHeader = headers[i]; if (!soapHeader.custom) { continue; } XmlMemberMapping member; if ((soapHeader.direction & SoapHeaderDirection.In) != 0) { member = inHeaderMappings[inCount++]; if (soapHeader.direction != SoapHeaderDirection.In) { outCount++; } } else { member = outHeaderMappings[outCount++]; } MessagePart part = new MessagePart(); part.Name = member.ElementName; if (use == SoapBindingUse.Encoded) { part.Type = new XmlQualifiedName(member.TypeName, member.TypeNamespace); } else { part.Element = new XmlQualifiedName(member.ElementName, member.Namespace); } Message message = new Message(); message.Name = identifiers.AddUnique(methodName + part.Name, message); message.Parts.Add(part); HeaderMessages.Add(message); ServiceDescriptionFormatExtension soapHeaderBinding = CreateSoapHeaderBinding(new XmlQualifiedName(message.Name, Binding.ServiceDescription.TargetNamespace), part.Name, use); if ((soapHeader.direction & SoapHeaderDirection.In) != 0) { OperationBinding.Input.Extensions.Add(soapHeaderBinding); } if ((soapHeader.direction & (SoapHeaderDirection.Out | SoapHeaderDirection.Fault)) != 0) { OperationBinding.Output.Extensions.Add(soapHeaderBinding); } } }
private void CreateHeaderMessages(string methodName, SoapBindingUse use, XmlMembersMapping inHeaderMappings, XmlMembersMapping outHeaderMappings, SoapReflectedHeader[] headers, bool rpc) { if (use == SoapBindingUse.Encoded) { this.SoapExporter.ExportMembersMapping(inHeaderMappings, false); if (outHeaderMappings != null) { this.SoapExporter.ExportMembersMapping(outHeaderMappings, false); } } else { base.SchemaExporter.ExportMembersMapping(inHeaderMappings); if (outHeaderMappings != null) { base.SchemaExporter.ExportMembersMapping(outHeaderMappings); } } CodeIdentifiers identifiers = new CodeIdentifiers(); int num = 0; int num2 = 0; for (int i = 0; i < headers.Length; i++) { SoapReflectedHeader header = headers[i]; if (header.custom) { XmlMemberMapping mapping; Message message; if ((header.direction & SoapHeaderDirection.In) != 0) { mapping = inHeaderMappings[num++]; if (header.direction != SoapHeaderDirection.In) { num2++; } } else { mapping = outHeaderMappings[num2++]; } MessagePart messagePart = new MessagePart { Name = mapping.XsdElementName }; if (use == SoapBindingUse.Encoded) { messagePart.Type = new XmlQualifiedName(mapping.TypeName, mapping.TypeNamespace); } else { messagePart.Element = new XmlQualifiedName(mapping.XsdElementName, mapping.Namespace); } message = new Message { Name = identifiers.AddUnique(methodName + messagePart.Name, message) }; message.Parts.Add(messagePart); base.HeaderMessages.Add(message); ServiceDescriptionFormatExtension extension = this.CreateSoapHeaderBinding(new XmlQualifiedName(message.Name, base.Binding.ServiceDescription.TargetNamespace), messagePart.Name, rpc ? mapping.Namespace : null, use); if ((header.direction & SoapHeaderDirection.In) != 0) { base.OperationBinding.Input.Extensions.Add(extension); } if ((header.direction & SoapHeaderDirection.Out) != 0) { base.OperationBinding.Output.Extensions.Add(extension); } if ((header.direction & SoapHeaderDirection.Fault) != 0) { if (this.soapMethod.IsClaimsConformance) { throw new InvalidOperationException(System.Web.Services.Res.GetString("BPConformanceHeaderFault", new object[] { this.soapMethod.methodInfo.ToString(), this.soapMethod.methodInfo.DeclaringType.FullName, "Direction", typeof(SoapHeaderDirection).Name, SoapHeaderDirection.Fault.ToString() })); } base.OperationBinding.Output.Extensions.Add(extension); } } } }
void CreateHeaderMessages(string methodName, SoapBindingUse use, XmlMembersMapping inHeaderMappings, XmlMembersMapping outHeaderMappings, SoapReflectedHeader[] headers, bool rpc) { // if (use == SoapBindingUse.Encoded) { SoapExporter.ExportMembersMapping(inHeaderMappings, false); if (outHeaderMappings != null) { SoapExporter.ExportMembersMapping(outHeaderMappings, false); } } else { SchemaExporter.ExportMembersMapping(inHeaderMappings); if (outHeaderMappings != null) { SchemaExporter.ExportMembersMapping(outHeaderMappings); } } CodeIdentifiers identifiers = new CodeIdentifiers(); int inCount = 0, outCount = 0; for (int i = 0; i < headers.Length; i++) { SoapReflectedHeader soapHeader = headers[i]; if (!soapHeader.custom) { continue; } XmlMemberMapping member; if ((soapHeader.direction & SoapHeaderDirection.In) != 0) { member = inHeaderMappings[inCount++]; if (soapHeader.direction != SoapHeaderDirection.In) { outCount++; } } else { member = outHeaderMappings[outCount++]; } MessagePart part = new MessagePart(); part.Name = member.XsdElementName; if (use == SoapBindingUse.Encoded) { part.Type = new XmlQualifiedName(member.TypeName, member.TypeNamespace); } else { part.Element = new XmlQualifiedName(member.XsdElementName, member.Namespace); } Message message = new Message(); message.Name = identifiers.AddUnique(methodName + part.Name, message); message.Parts.Add(part); HeaderMessages.Add(message); ServiceDescriptionFormatExtension soapHeaderBinding = CreateSoapHeaderBinding(new XmlQualifiedName(message.Name, Binding.ServiceDescription.TargetNamespace), part.Name, rpc ? member.Namespace : null, use); if ((soapHeader.direction & SoapHeaderDirection.In) != 0) { OperationBinding.Input.Extensions.Add(soapHeaderBinding); } if ((soapHeader.direction & SoapHeaderDirection.Out) != 0) { OperationBinding.Output.Extensions.Add(soapHeaderBinding); } if ((soapHeader.direction & SoapHeaderDirection.Fault) != 0) { if (soapMethod.IsClaimsConformance) { throw new InvalidOperationException(Res.GetString(Res.BPConformanceHeaderFault, soapMethod.methodInfo.ToString(), soapMethod.methodInfo.DeclaringType.FullName, "Direction", typeof(SoapHeaderDirection).Name, SoapHeaderDirection.Fault.ToString())); } OperationBinding.Output.Extensions.Add(soapHeaderBinding); } } }