public void Dispose()
 {
     if (rsMain != null)
     {
         rsMain.Dispose();
         rsMain = null;
     }
 }
        private void InitProxy()
        {
            X509Store store = null;
            X509CertificateCollection certs = null;
            X509Certificate           cert  = null;

            try
            {
                rsMain = new VAIdM()
                {
                    Url = MviServiceUrl, Credentials = CredentialCache.DefaultCredentials
                };
                if (!string.IsNullOrEmpty(MviCertName))
                {
                    store = new X509Store(StoreLocation.LocalMachine);
                    if (store != null)
                    {
                        store.Open(OpenFlags.ReadOnly);
                        if (store.Certificates != null && store.Certificates.Count > 0)
                        {
                            certs = store.Certificates.Find(X509FindType.FindBySubjectName, MviCertName, false);
                            if (certs != null && certs.Count > 0)
                            {
                                cert = new X509Certificate(certs[0]);

                                ServicePointManager.Expect100Continue = true;
                                ServicePointManager.SecurityProtocol  = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                                //ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);

                                //rsMain.CookieContainer = new CookieContainer();
                                //rsMain.PreAuthenticate = true;
                                rsMain.ClientCertificates.Add(cert);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.LogError(ex.Message, String.Format("{0}.{1}", System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodBase.GetCurrentMethod().Name), string.Empty, 0);
                throw ex;
            }
            finally
            {
                if (store != null)
                {
                    store.Close();
                    store.Dispose();
                    store = null;
                }
            }
        }