public string ReplaceStartupFile()

in src/CTA.Rules.PortCore/ProjectSpecificPort/WCF/WCFServicePort.cs [219:294]


        public string ReplaceStartupFile(string startupFilePath)
        {
            var startupFileContents = File.ReadAllText(startupFilePath);

            if (_projectType == ProjectType.WCFConfigBasedService)
            {
                string configPath = Path.Combine(_projectPath, Constants.PortedConfigFileName);

                if (HasBehavioursTag())
                {
                    startupFileContents = HandleBehaviorsTag(startupFilePath);
                }

                return startupFileContents.Replace(Constants.XMLPathPlaceholder, "@\"" + configPath + "\"");
            }
            else
            {
                string addService = Constants.AddServiceFormat;
                string endpointConfigTemplate = Constants.AddServiceEndpointFormat;
                string endpointConfigs = "";

                ProjectWorkspace project = _analyzerResult.ProjectResult;

                Dictionary<string, BindingConfiguration> bindingTransportMap = GetBindingsTransportMap(project);

                Tuple<string, string> serviceInterfaceAndClass = WCFBindingAndTransportUtil.GetServiceInterfaceAndClass(project);

                var serviceInterfaceName = serviceInterfaceAndClass.Item1 ?? Constants.DefaultServiceInterface;
                var serviceClassName = serviceInterfaceAndClass.Item2 ?? Constants.DefaultServiceClass;

                endpointConfigs += String.Format(addService, serviceClassName);

                foreach(KeyValuePair<string, BindingConfiguration> keyValuePair in bindingTransportMap)
                {
                    var binding = keyValuePair.Key;
                    var mode = keyValuePair.Value.Mode;
                    var endpointAddress = keyValuePair.Value.EndpointAddress ?? String.Join("", "\"", "/", binding.ToLower(), "\"");

                    if (mode.ToLower() == Constants.TransportMode.ToLower())
                    {
                        mode = Constants.TransportMode;
                    }
                    else if (mode.ToLower() == Constants.TransportMessageCredentialsMode.ToLower())
                    {
                        mode = Constants.TransportMessageCredentialsMode;
                    }

                    if (binding == Constants.HttpProtocol)
                    {
                        endpointConfigs += String.Format(endpointConfigTemplate, serviceClassName, serviceInterfaceName, 
                            mode == Constants.NoneMode ? "new BasicHttpBinding()" : "new BasicHttpBinding(BasicHttpSecurityMode." + mode + ")", endpointAddress);
                    }
                    else if(binding == Constants.NettcpProtocol)
                    {
                        endpointConfigs += String.Format(endpointConfigTemplate, serviceClassName, serviceInterfaceName,
                            mode == Constants.NoneMode ? "new NetTcpBinding()" : "new NetTcpBinding(SecurityMode." + mode + ")", endpointAddress);
                    }
                    else if (binding == Constants.WSHttpProtocol)
                    {
                        endpointConfigs += String.Format(endpointConfigTemplate, serviceClassName, serviceInterfaceName,
                            mode == Constants.NoneMode ? "new WSHttpBinding()" : "new WSHttpBinding(SecurityMode." + mode + ")", endpointAddress);
                    }
                    else if (binding == Constants.HttpsProtocol)
                    {
                        endpointConfigs += String.Format(endpointConfigTemplate, serviceClassName, serviceInterfaceName, "new BasicHttpBinding(BasicHttpSecurityMode.Transport)", endpointAddress);
                    }
                    else if (binding == Constants.NethttpProtocol)
                    {
                        endpointConfigs += String.Format(endpointConfigTemplate, serviceClassName, serviceInterfaceName,
                            mode == Constants.NoneMode ? "new NetHttpBinding()" : "new NetHttpBinding(BasicHttpSecurityMode." + mode + ")", endpointAddress);
                    }
                }

                return startupFileContents.Replace(Constants.EndpointPlaceholder, endpointConfigs);
            }
        }