private void SetListenUri(ServiceEndpoint endpoint, Binding binding, Uri listenUri) { endpoint.UnresolvedListenUri = listenUri; endpoint.ListenUri = ServiceHost.MakeAbsoluteUri(listenUri, binding, this.host.InternalBaseAddresses); }
/// <summary> /// Create a new service endpoint and add it to Description /// </summary> /// <param name="contractType">interface annotated with [ServiceContract]</param> /// <param name="binding">protocol to use for communication</param> /// <param name="address">absolute address for service, or address relative to base address for supplied binding</param> /// <returns>The endpoint which was created</returns> public ServiceEndpoint AddServiceEndpoint(Type contractType, Binding binding, Uri address) { CheckArgument(contractType, "contractType"); CheckArgument(binding, "binding"); CheckArgument(address, "address"); ContractDescription contract = this.host.ImplementedContracts == null ? null : this.host.ImplementedContracts.Values.FirstOrDefault(implementedContract => implementedContract.ContractType == contractType); if (contract == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("contractType", SR.GetString(SR.SFxMethodNotSupportedByType2, this.host.Description.ServiceType, contractType)); } ServiceEndpoint endpoint = new ServiceEndpoint(contract, binding, new EndpointAddress(ServiceHost.MakeAbsoluteUri(address, binding, this.host.InternalBaseAddresses))); this.AddServiceEndpoint(endpoint); return(endpoint); }