using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.Configuration; using System.ServiceModel.Description; using DataLibrary; using System.Net; using CoreSavingLibrary; namespace Saving { public class WcfCallingExtend { private XmlConfigService xml; public WcfCallingExtend(XmlConfigService xml) { this.xml = xml; } private bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; } private bool progressBar = false; public bool ProgressBar { get { return progressBar; } set { progressBar = value; } } //utility ---------------------------------------------------------------------- public void Close() { } private EndpointAddress ServiceUrl(String serviceName) { if (xml == null) { xml = new XmlConfigService(WebUtil.GetGcoopPath()); } if (xml.WcfProtocol == "https") { ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(new WcfCallingExtend(null).AcceptAllCertifications); } String domain; if (ProgressBar) { domain = xml.WcfDomainProgress; } else { domain = xml.WcfDomain; } if (domain == "*") { domain = xml.SavDomain; } if (domain == "*") { domain = WebUtil.GetSavingAddress(); } String url = xml.WcfProtocol + "://" + domain + ":" + xml.WcfPort + "/" + WebUtil.GetVirtualDirectory() + "/" + xml.WcfPathPattern; String uri = url + serviceName + ".svc"; EndpointAddress enp = new EndpointAddress(new Uri(uri)); return enp; } private void SetBinding(ServiceEndpoint endpoint, String name) { BasicHttpBinding binding = new BasicHttpBinding(); binding.MaxReceivedMessageSize = Convert.ToInt64(ConfigurationManager.AppSettings["bindingMaxReceivedMessageSize"]); binding.ReaderQuotas.MaxDepth = Convert.ToInt32(ConfigurationManager.AppSettings["bindingReaderQuotasMaxDepth"]); binding.ReaderQuotas.MaxStringContentLength = Convert.ToInt32(ConfigurationManager.AppSettings["bindingReaderQuotasMaxStringContentLength"]); binding.ReaderQuotas.MaxArrayLength = Convert.ToInt32(ConfigurationManager.AppSettings["bindingReaderQuotasMaxArrayLength"]); binding.ReaderQuotas.MaxBytesPerRead = Convert.ToInt32(ConfigurationManager.AppSettings["bindingReaderQuotasMaxBytesPerRead"]); binding.CloseTimeout = TimeSpan.FromSeconds(Convert.ToInt32(ConfigurationManager.AppSettings["bindingCloseTimeout"])); binding.ReceiveTimeout = TimeSpan.FromSeconds(Convert.ToInt32(ConfigurationManager.AppSettings["bindingReceiveTimeout"])); binding.OpenTimeout = TimeSpan.FromSeconds(Convert.ToInt32(ConfigurationManager.AppSettings["bindingOpenTimeout"])); binding.SendTimeout = TimeSpan.FromSeconds(Convert.ToInt32(ConfigurationManager.AppSettings["bindingSendTimeout"])); endpoint.Binding = binding; endpoint.Address = ServiceUrl(name); } } }