/// <summary> /// Create channel factory from service config db /// </summary> /// <typeparam name="T">The service contract</typeparam> /// <returns>The built channel factory</returns> private static ChannelFactory <T> CreateChannelFactory <T>() { var config = ServiceConfigurationStore.GetClientConfiguration(typeof(T)); if (config != null) { string[] baseAddresses = null; if (!string.IsNullOrEmpty(config.HostXML)) { var hostElement = new HostElement(); hostElement.DeserializeElement(config.HostXML); baseAddresses = WcfServiceHelper.GetBaseAddressesFromHostElement(hostElement); } if (config.Endpoint != null) { var binding = WcfServiceHelper.GetBinding(config.Endpoint); if (binding != null) { var address = WcfServiceHelper.BuildEndpointAddress(config.Endpoint, baseAddresses); address = string.Format(address, config.Endpoint.FarmAddress); var cf = new ChannelFactory <T>(binding, address); WcfServiceHelper.ApplyEndpointBehaviorConfiguration(cf.Endpoint, config.Endpoint); return(cf); } } else { throw new ConfigurationErrorsException("Could not find any endpoint for specified service contract - " + typeof(T).GetQualifiedTypeName()); } } return(null); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var serviceCriteria = new ServiceCriteria(); dsService.Criteria = serviceCriteria.AddSortBy(serviceCriteria.ServiceName, false); var bindingCriteria = new BindingCriteria(); dsBinding.Criteria = bindingCriteria.AddSortBy(bindingCriteria.BindingName, false); var bindingTypeCriteria = new BindingTypeCriteria(); dsBindingType.Criteria = bindingTypeCriteria.AddSortBy(bindingTypeCriteria.BindingTypeFriendlyName, false); var endpointCriteria = new EndpointCriteria(); dsEndpoint.Criteria = endpointCriteria; using (var serviceLocator = ServiceManager.GetServiceLocator(typeof(ISimpleServiceDemo))) { litSayHello.Text = serviceLocator.GetService <ISimpleServiceDemo>().SayHellod(); var clientConfig = ServiceConfigurationStore.GetClientConfiguration(typeof(ISimpleServiceDemo)); litSayHello.Text += string.Format(" [Binding Type: {0}]", ServiceConfigurationStore.GetBindingType(clientConfig.Endpoint.BindingType_id).FriendlyName); } } }