void IWsdlExportExtension.ExportEndpoint(WsdlExporter exporter, WsdlEndpointConversionContext context) { var soap_binding = new WS.Soap12Binding(); soap_binding.Transport = "http://schemas.microsoft.com/soap/tcp"; soap_binding.Style = WS.SoapBindingStyle.Document; context.WsdlBinding.Extensions.Add(soap_binding); var address = context.Endpoint.Address; var uri = address.Uri.AbsoluteUri; var soap_address = new WS.Soap12AddressBinding(); soap_address.Location = uri; context.WsdlPort.Extensions.Add(soap_address); var doc = new XmlDocument(); var endpoint_ref = doc.CreateElement( "EndpointReference", AddressingVersion.WSAddressing10.Namespace); var endpoint_addr = doc.CreateElement( "Address", AddressingVersion.WSAddressing10.Namespace); endpoint_addr.InnerText = uri; endpoint_ref.AppendChild(endpoint_addr); context.WsdlPort.Extensions.Add(endpoint_ref); }
private void AddMinimum( WSD.ServiceDescription wsdl, string contractName, OperationDescriptionCollection operations, ServiceEndpoint endpoint) { // Absolut minimum in order to provide a WSDL var portType = new WSD.PortType { Name = contractName }; wsdl.PortTypes.Add(portType); var address = new WSD.Soap12AddressBinding { Location = endpoint.Address.ToString() }; var port = new WSD.Port { Name = contractName }; port.Extensions.Add(address); var service = new WSD.Service { Name = wsdl.Name }; service.Ports.Add(port); wsdl.Services.Add(service); }
bool ImportNetTcpEndpoint(WsdlEndpointConversionContext context) { var tcp = context.Endpoint.Binding as NetTcpBinding; if (tcp == null) { return(false); } WS.Soap12AddressBinding address = null; foreach (var extension in context.WsdlPort.Extensions) { var check = extension as WS.Soap12AddressBinding; if (check != null) { address = check; break; } } if (address == null) { return(false); } context.Endpoint.Address = new EndpointAddress(address.Location); context.Endpoint.ListenUri = new Uri(address.Location); context.Endpoint.ListenUriMode = ListenUriMode.Explicit; return(true); }
static WsdlNS.SoapAddressBinding CreateSoapAddressBinding(EnvelopeVersion version, WsdlNS.Port wsdlPort) { WsdlNS.SoapAddressBinding soapAddressBinding = null; if (version == EnvelopeVersion.Soap12) { soapAddressBinding = new WsdlNS.Soap12AddressBinding(); } else if (version == EnvelopeVersion.Soap11) { soapAddressBinding = new WsdlNS.SoapAddressBinding(); } Fx.Assert(soapAddressBinding != null, "EnvelopeVersion is not recognized. Please update the SoapHelper class"); wsdlPort.Extensions.Add(soapAddressBinding); return(soapAddressBinding); }
public static void NetTcpBinding( TestContext context, MetadataSet doc, SecurityMode security, bool reliableSession, TransferMode transferMode, TestLabel label) { label.EnterScope("netTcpBinding"); var sd = (WS.ServiceDescription)doc.MetadataSections [0].Metadata; label.EnterScope("wsdl"); label.EnterScope("bindings"); Assert.That(sd.Bindings.Count, Is.EqualTo(1), label.Get()); var binding = sd.Bindings [0]; Assert.That(binding.ExtensibleAttributes, Is.Null, label.Get()); Assert.That(binding.Extensions, Is.Not.Null, label.Get()); WS.Soap12Binding soap = null; XmlElement xml = null; foreach (var ext in binding.Extensions) { if (ext is WS.Soap12Binding) { soap = (WS.Soap12Binding)ext; } else if (ext is XmlElement) { xml = (XmlElement)ext; } } CheckSoapBinding(soap, "http://schemas.microsoft.com/soap/tcp", label); label.EnterScope("policy-xml"); Assert.That(xml, Is.Not.Null, label.Get()); var assertions = AssertPolicy(sd, xml, label); Assert.That(assertions, Is.Not.Null, label.Get()); AssertPolicy(assertions, BinaryEncodingQName, label); AssertPolicy(assertions, UsingAddressingQName, label); if (transferMode == TransferMode.Streamed) { AssertPolicy(assertions, StreamedTransferQName, label); } switch (security) { case SecurityMode.Message: AssertPolicy(assertions, SymmetricBindingQName, label); AssertPolicy(assertions, Wss11QName, label); AssertPolicy(assertions, Trust10QName, label); break; case SecurityMode.Transport: AssertPolicy(assertions, TransportBindingQName, label); break; case SecurityMode.TransportWithMessageCredential: AssertPolicy(assertions, TransportBindingQName, label); AssertPolicy(assertions, EndorsingSupportingQName, label); AssertPolicy(assertions, Wss11QName, label); AssertPolicy(assertions, Trust10QName, label); break; default: break; } if (reliableSession) { AssertPolicy(assertions, ReliableSessionQName, label); } Assert.That(assertions.Count, Is.EqualTo(0), label.Get()); label.LeaveScope(); label.EnterScope("services"); Assert.That(sd.Services, Is.Not.Null, label.Get()); Assert.That(sd.Services.Count, Is.EqualTo(1), label.Get()); var service = sd.Services [0]; Assert.That(service.Ports, Is.Not.Null, label.Get()); Assert.That(service.Ports.Count, Is.EqualTo(1), label.Get()); var port = service.Ports [0]; label.EnterScope("port"); Assert.That(port.Extensions, Is.Not.Null, label.Get()); Assert.That(port.Extensions.Count, Is.EqualTo(2), label.Get()); WS.Soap12AddressBinding soap_addr_binding = null; XmlElement port_xml = null; foreach (var extension in port.Extensions) { if (extension is WS.Soap12AddressBinding) { soap_addr_binding = (WS.Soap12AddressBinding)extension; } else if (extension is XmlElement) { port_xml = (XmlElement)extension; } else { Assert.Fail(label.Get()); } } Assert.That(soap_addr_binding, Is.Not.Null, label.Get()); Assert.That(port_xml, Is.Not.Null, label.Get()); Assert.That(port_xml.NamespaceURI, Is.EqualTo(Wsa10Namespace), label.Get()); Assert.That(port_xml.LocalName, Is.EqualTo("EndpointReference"), label.Get()); label.LeaveScope(); label.LeaveScope(); label.LeaveScope(); // wsdl var importer = new WsdlImporter(doc); label.EnterScope("bindings"); var bindings = importer.ImportAllBindings(); CheckImportErrors(importer, label); Assert.That(bindings, Is.Not.Null, label.Get()); Assert.That(bindings.Count, Is.EqualTo(1), label.Get()); CheckNetTcpBinding( bindings [0], security, reliableSession, transferMode, label); label.LeaveScope(); label.EnterScope("endpoints"); var endpoints = importer.ImportAllEndpoints(); CheckImportErrors(importer, label); Assert.That(endpoints, Is.Not.Null, label.Get()); Assert.That(endpoints.Count, Is.EqualTo(1), label.Get()); CheckEndpoint(endpoints [0], MetadataSamples.NetTcpUri, label); label.LeaveScope(); label.LeaveScope(); }