/// <summary> /// Creates an endpoint based on the specified address. /// </summary> /// <param name="contract">The endpoint's contract.</param> /// <param name="address">The endpoint's base address.</param> /// <returns>An endpoint.</returns> private ServiceEndpoint CreateEndpointForAddress(ContractDescription contract, Uri address) { BasicHttpBinding binding = new BasicHttpBinding(); binding.MaxReceivedMessageSize = ServiceUtility.MaxReceivedMessageSize; ServiceUtility.SetReaderQuotas(binding.ReaderQuotas); if (address.Scheme.Equals(Uri.UriSchemeHttps)) { binding.Security.Mode = BasicHttpSecurityMode.Transport; } else if (ServiceUtility.CredentialType != HttpClientCredentialType.None) { binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; } if (ServiceUtility.CredentialType != HttpClientCredentialType.None) { binding.Security.Transport.ClientCredentialType = ServiceUtility.CredentialType; } ServiceEndpoint endpoint = new ServiceEndpoint(contract, binding, new EndpointAddress(address.OriginalString + "/" + this.Name)); endpoint.Behaviors.Add(new SoapQueryBehavior()); return(endpoint); }
/// <summary> /// Creates an endpoint based on the specified address. /// </summary> /// <param name="contract">The endpoint's contract.</param> /// <param name="address">The endpoint's base address.</param> /// <returns>An endpoint.</returns> private ServiceEndpoint CreateEndpointForAddress(ContractDescription contract, Uri address) { PoxBinaryMessageEncodingBindingElement encoding = new PoxBinaryMessageEncodingBindingElement(); ServiceUtility.SetReaderQuotas(encoding.ReaderQuotas); HttpTransportBindingElement transport; if (address.Scheme.Equals(Uri.UriSchemeHttps)) { transport = new HttpsTransportBindingElement(); } else { transport = new HttpTransportBindingElement(); } transport.ManualAddressing = true; transport.MaxReceivedMessageSize = ServiceUtility.MaxReceivedMessageSize; if (ServiceUtility.AuthenticationScheme != AuthenticationSchemes.None) { transport.AuthenticationScheme = ServiceUtility.AuthenticationScheme; } CustomBinding binding = new CustomBinding( new BindingElement[] { encoding, transport }); ServiceEndpoint endpoint = new ServiceEndpoint(contract, binding, new EndpointAddress(address.OriginalString + "/" + this.Name)); endpoint.Behaviors.Add(new DomainServiceWebHttpBehavior() { DefaultBodyStyle = System.ServiceModel.Web.WebMessageBodyStyle.Wrapped }); endpoint.Behaviors.Add(new SilverlightFaultBehavior()); return(endpoint); }
/// <summary> /// Creates an endpoint based on the specified address. /// </summary> /// <param name="contract">The endpoint's contract.</param> /// <param name="address">The endpoint's base address.</param> /// <returns>An endpoint.</returns> private ServiceEndpoint CreateEndpointForAddress(ContractDescription contract, Uri address) { WebHttpBinding binding = new WebHttpBinding(); binding.MaxReceivedMessageSize = ServiceUtility.MaxReceivedMessageSize; ServiceUtility.SetReaderQuotas(binding.ReaderQuotas); if (address.Scheme.Equals(Uri.UriSchemeHttps)) { binding.Security.Mode = WebHttpSecurityMode.Transport; } else if (ServiceUtility.CredentialType != HttpClientCredentialType.None) { binding.Security.Mode = WebHttpSecurityMode.TransportCredentialOnly; } if (ServiceUtility.CredentialType != HttpClientCredentialType.None) { binding.Security.Transport.ClientCredentialType = ServiceUtility.CredentialType; } ServiceEndpoint endpoint = new ServiceEndpoint(contract, binding, new EndpointAddress(address.OriginalString + "/" + this.Name)); endpoint.Behaviors.Add(new DomainServiceWebHttpBehavior() { DefaultBodyStyle = WebMessageBodyStyle.Wrapped, DefaultOutgoingRequestFormat = WebMessageFormat.Json, DefaultOutgoingResponseFormat = WebMessageFormat.Json }); if (this.Parameters[JsonEndpointFactory.TransmitMetadataConfigEntry] != null) { bool transmitMetadata = false; if (bool.TryParse(this.Parameters[JsonEndpointFactory.TransmitMetadataConfigEntry], out transmitMetadata) && transmitMetadata) { endpoint.Behaviors.Add(new ServiceMetadataEndpointBehavior()); } } return(endpoint); }