Esempio n. 1
0
        /// <summary>
        /// Composes an address from parts.
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="pathOnServer"></param>
        /// <returns></returns>
        public static string ComposeAddress(string protocol, string host, int port, string pathOnServer, WCFBinding binding)
        {
            string _protocol = "<none>";
            string _host = "<none>";

            if (protocol != string.Empty)
                _protocol = protocol;

            if (host != string.Empty)
                _host = host;

            string portPart = String.Format(":{0}", port.ToString());

            if (_protocol == "http" && port == 80)
                portPart = string.Empty;

            if (binding == WCFBinding.NetNamedPipeBinding)
                portPart = string.Empty;

            return string.Format("{0}://{1}{3}/{2}",
                _protocol, //0
                _host, //1
                pathOnServer.TrimStart('/'), //2
                portPart //3
            );
        }
Esempio n. 2
0
        /// <summary>
        /// Get the default binding for the protocol.
        /// </summary>
        /// <param name="protocol"></param>
        /// <returns></returns>
        public static WCFBinding GetDefaultBindingForProtocol(string protocol)
        {
            WCFBinding ret = WCFBinding.None;

            switch (protocol)
            {
            case ProtocolHttp:
                ret = WCFBinding.BasicHttpBinding;
                break;

            case ProtocolHttps:
                ret = WCFBinding.BasicHttpBinding;
                break;

            case ProtocolMSMQ:
                ret = WCFBinding.NetMsmqBinding;
                break;

            case ProtocolNamedPipes:
                ret = WCFBinding.NetNamedPipeBinding;
                break;

            case ProtocolP2P:
                ret = WCFBinding.NetPeerTcpBinding;
                break;

            case ProtocolTcp:
                ret = WCFBinding.NetTcpBinding;
                break;
            }

            return(ret);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the default protocol for the binding.
        /// </summary>
        /// <remarks>Some bindings can have multiple protocol http, https. This is just the default protocol for binding.</remarks>
        /// <param name="binding"></param>
        /// <returns>Protocol name that can be used directly in address of the end point</returns>
        public static string GetDefaultProtocolForBinding(WCFBinding binding)
        {
            string ret = string.Empty;

            switch (binding)
            {
            case WCFBinding.BasicHttpBinding:
                ret = ProtocolHttp;
                break;

            case WCFBinding.MsmqIntegrationBinding:
                ret = ProtocolMSMQ;
                break;

            case WCFBinding.NetMsmqBinding:
                ret = ProtocolMSMQ;
                break;

            case WCFBinding.NetNamedPipeBinding:
                ret = ProtocolNamedPipes;
                break;

            case WCFBinding.NetPeerTcpBinding:
                ret = ProtocolP2P;
                break;

            case WCFBinding.NetTcpBinding:
                ret = ProtocolTcp;
                break;

            case WCFBinding.WSDualHttpBinding:
                ret = ProtocolHttp;
                break;

            case WCFBinding.WSFederationHttpBinding:
                ret = ProtocolHttp;
                break;

            case WCFBinding.WSHttpBinding:
                ret = ProtocolHttp;
                break;
            }

            return(ret);
        }
Esempio n. 4
0
 /// <summary>
 /// Gets the full WCF addres from internal data.
 /// </summary>
 /// <param name="host"></param>
 /// <param name="localAddressPart"></param>
 /// <param name="port"></param>
 /// <param name="protocol"></param>
 /// <param name="binding"></param>
 /// <returns></returns>
 public static string GetCustomWCFAddress(string host, string localAddressPart, int port, string protocol, WCFBinding binding)
 {
     return(Utility.WCFUtils.ComposeAddress(protocol, host, port, localAddressPart, binding));
 }
Esempio n. 5
0
        /// <summary>
        /// Composes an address from parts.
        /// </summary>
        /// <param name="protocol"></param>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="pathOnServer"></param>
        /// <returns></returns>
        public static string ComposeAddress(string protocol, string host, int port, string pathOnServer, WCFBinding binding)
        {
            string _protocol = "<none>";
            string _host     = "<none>";

            if (protocol != string.Empty)
            {
                _protocol = protocol;
            }

            if (host != string.Empty)
            {
                _host = host;
            }


            string portPart = String.Format(":{0}", port.ToString());

            if (_protocol == "http" && port == 80)
            {
                portPart = string.Empty;
            }

            if (binding == WCFBinding.NetNamedPipeBinding)
            {
                portPart = string.Empty;
            }

            return(string.Format("{0}://{1}{3}/{2}",
                                 _protocol,                   //0
                                 _host,                       //1
                                 pathOnServer.TrimStart('/'), //2
                                 portPart                     //3
                                 ));
        }
Esempio n. 6
0
        /// <summary>
        /// Retuns the newly constructed and configured WCF bindig derived class instance of the specified type.
        /// </summary>
        /// <remarks>
        /// This function might get more important if other WCF bingis are supported.
        /// All settings to a specific binding shuld be made here.
        /// All binding are probably not needed.
        /// </remarks>
        /// <param name="endPoint">EndPoint entity containig iformation about, what type of binding to return and how to set it.</param>
        /// <returns>The new configured binding element.</returns>
        public static System.ServiceModel.Channels.Binding GetWCFBinding(EndPoint endPoint)
        {
            if (endPoint.RemotingMechanism == RemotingMechanism.TcpBinary)
            {
                return(null);
            }

            System.ServiceModel.Channels.Binding ret = null;

            WCFBinding bindingEnum = endPoint.Binding;

            switch (bindingEnum)
            {
                #region BasicHttpBinding
            case WCFBinding.BasicHttpBinding:
            {
                //WARNING: untested code
                System.ServiceModel.BasicHttpBinding bhb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    bhb = new System.ServiceModel.BasicHttpBinding();
                    bhb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    bhb.MaxReceivedMessageSize = Int32.MaxValue;
                    bhb.Security.Mode          = System.ServiceModel.BasicHttpSecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    bhb = new System.ServiceModel.BasicHttpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = bhb;
                break;
            }

                #endregion
                #region MsmqIntegrationBinding
            case WCFBinding.MsmqIntegrationBinding:
            {
                //WARNING: untested code
                System.ServiceModel.MsmqIntegration.MsmqIntegrationBinding mib = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    mib = new System.ServiceModel.MsmqIntegration.MsmqIntegrationBinding();
                    mib.Security.Mode = System.ServiceModel.MsmqIntegration.MsmqIntegrationSecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    mib = new System.ServiceModel.MsmqIntegration.MsmqIntegrationBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = mib;
                break;
            }

                #endregion
                #region NetMsmqBinding
            case WCFBinding.NetMsmqBinding:
            {
                //WARNING: untested code
                System.ServiceModel.NetMsmqBinding nmb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    nmb = new System.ServiceModel.NetMsmqBinding();
                    nmb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    nmb.Security.Mode = System.ServiceModel.NetMsmqSecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    nmb = new System.ServiceModel.NetMsmqBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = nmb;
                break;
            }

                #endregion
                #region NetNamedPipeBinding
            case WCFBinding.NetNamedPipeBinding:
            {
                //WARNING: untested code
                System.ServiceModel.NetNamedPipeBinding nnpb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    nnpb = new System.ServiceModel.NetNamedPipeBinding();
                    nnpb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    nnpb.Security.Mode = System.ServiceModel.NetNamedPipeSecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    nnpb = new System.ServiceModel.NetNamedPipeBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = nnpb;
                break;
            }

                #endregion
                #region NetPeerTcpBinding
            case WCFBinding.NetPeerTcpBinding:
            {
                //WARNING: untested code
                System.ServiceModel.NetPeerTcpBinding nptb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    nptb = new System.ServiceModel.NetPeerTcpBinding();
                    nptb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    nptb.Security.Mode = System.ServiceModel.SecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    nptb = new System.ServiceModel.NetPeerTcpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = nptb;
                break;
            }

                #endregion
                #region NetTcpBinding
            case WCFBinding.NetTcpBinding:
            {
                System.ServiceModel.NetTcpBinding ntb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    ntb = new System.ServiceModel.NetTcpBinding();
                    ntb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    ntb.MaxReceivedMessageSize = Int32.MaxValue;
                    ntb.Security.Mode          = System.ServiceModel.SecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    ntb = new System.ServiceModel.NetTcpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = ntb;
                break;
            }

                #endregion
                #region WSDualHttpBinding
            case WCFBinding.WSDualHttpBinding:
            {
                //WARNING: untested code
                System.ServiceModel.WSDualHttpBinding wdhb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    wdhb = new System.ServiceModel.WSDualHttpBinding();
                    wdhb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    wdhb.Security.Mode = System.ServiceModel.WSDualHttpSecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    wdhb = new System.ServiceModel.WSDualHttpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = wdhb;
                break;
            }

                #endregion
                #region WSFederationHttpBinding
            case WCFBinding.WSFederationHttpBinding:
            {
                //WARNING: untested code
                System.ServiceModel.WSFederationHttpBinding wfhb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    wfhb = new System.ServiceModel.WSFederationHttpBinding();
                    wfhb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    wfhb = new System.ServiceModel.WSFederationHttpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = wfhb;
                break;
            }

                #endregion
                #region WSHttpBinding
            case WCFBinding.WSHttpBinding:
            {
                System.ServiceModel.WSHttpBinding whb = null;
                switch (endPoint.BindingSettingType)
                {
                case WCFBindingSettingType.Default:
                    whb = new System.ServiceModel.WSHttpBinding();
                    whb.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                    whb.MaxReceivedMessageSize = Int32.MaxValue;
                    whb.Security.Mode          = System.ServiceModel.SecurityMode.None;
                    break;

                case WCFBindingSettingType.UseConfigFile:
                    whb = new System.ServiceModel.WSHttpBinding(endPoint.BindingConfigurationName);
                    break;
                }
                ret = whb;
                break;
            }
                #endregion
            }


            return(ret);
        }
Esempio n. 7
0
        /// <summary>
        /// Gets the default protocol for the binding.
        /// </summary>
        /// <remarks>Some bindings can have multiple protocol http, https. This is just the default protocol for binding.</remarks>
        /// <param name="binding"></param>
        /// <returns>Protocol name that can be used directly in address of the end point</returns>
        public static string GetDefaultProtocolForBinding(WCFBinding binding)
        {
            string ret = string.Empty;
            switch (binding)
            {
                case WCFBinding.BasicHttpBinding:
                    ret = ProtocolHttp;
                    break;
                case WCFBinding.MsmqIntegrationBinding:
                    ret = ProtocolMSMQ;
                    break;
                case WCFBinding.NetMsmqBinding:
                    ret = ProtocolMSMQ;
                    break;
                case WCFBinding.NetNamedPipeBinding:
                    ret = ProtocolNamedPipes;
                    break;
                case WCFBinding.NetPeerTcpBinding:
                    ret = ProtocolP2P;
                    break;
                case WCFBinding.NetTcpBinding:
                    ret = ProtocolTcp;
                    break;
                case WCFBinding.WSDualHttpBinding:
                    ret = ProtocolHttp;
                    break;
                case WCFBinding.WSFederationHttpBinding:
                    ret = ProtocolHttp;
                    break;
                case WCFBinding.WSHttpBinding:
                    ret = ProtocolHttp;
                    break;
            }

            return ret;
        }
Esempio n. 8
0
 /// <summary>
 /// Gets the full WCF addres from internal data.
 /// </summary>
 /// <param name="host"></param>
 /// <param name="localAddressPart"></param>
 /// <param name="port"></param>
 /// <param name="protocol"></param>
 /// <param name="binding"></param>
 /// <returns></returns>
 public static string GetCustomWCFAddress(string host, string localAddressPart, int port, string protocol, WCFBinding binding)
 {
     return Utility.WCFUtils.ComposeAddress(protocol, host, port, localAddressPart, binding);
 }