예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
                }
            }
        }