コード例 #1
0
        public void CreateNewServerConfig(SCConnectionStringBuilder hostServerConfig)
        {
            hostServerConfig.ThrowIfNull(nameof(hostServerConfig));

            string name             = hostServerConfig.GetDisplayName();
            string connectionstring = hostServerConfig.ConnectionString;

            CreateIsolatedStorage();

            using (var userStorage = IsolatedStorageFile.GetUserStoreForAssembly())
            {
                XmlDocument k2ConfDoc = null;

                using (var userStream = new IsolatedStorageFileStream(_k2ConfigFile, FileMode.Open, userStorage))
                    using (var cryptostreamLoad = new CryptoStream(userStream, Decryptor(), CryptoStreamMode.Read))
                    {
                        k2ConfDoc = new XmlDocument();
                        k2ConfDoc.Load(cryptostreamLoad);
                    }

                using (var userStream = new IsolatedStorageFileStream(_k2ConfigFile, FileMode.Create, userStorage))
                    using (var cryptostream = new CryptoStream(userStream, Encryptor(), CryptoStreamMode.Write))
                    {
                        try
                        {
                            var connectionStringsElement = k2ConfDoc.SelectSingleNode("/configuration/connectionstrings");
                            var currentNode = connectionStringsElement.SelectSingleNode(string.Format("connectionstring[@name='{0}']", name));

                            if (currentNode != null)
                            {
                                connectionStringsElement.RemoveChild(currentNode);
                            }

                            var connStringNode = k2ConfDoc.CreateElement("connectionstring");
                            connectionStringsElement.PrependChild(connStringNode);

                            connStringNode.SetAttribute("name", name);
                            connStringNode.SetAttribute("connectionstring", connectionstring);

                            k2ConfDoc.Save(cryptostream);
                            userStream.Flush();
                        }
                        finally
                        {
                            k2ConfDoc = null;
                        }
                    }
            }
        }
コード例 #2
0
        public void Remove(SCConnectionStringBuilder hostServerConfig)
        {
            hostServerConfig.ThrowIfNull(nameof(hostServerConfig));

            string name = hostServerConfig.GetDisplayName();

            CreateIsolatedStorage();

            using (var userStorage = IsolatedStorageFile.GetUserStoreForAssembly())
            {
                XmlDocument k2ConfDoc = null;

                using (var userStream = new IsolatedStorageFileStream(_k2ConfigFile, FileMode.Open, userStorage))
                    using (CryptoStream cryptostreamLoad = new CryptoStream(userStream, Decryptor(), CryptoStreamMode.Read))
                    {
                        k2ConfDoc = new XmlDocument();
                        k2ConfDoc.Load(cryptostreamLoad);
                    }

                var deleteNode = k2ConfDoc.SelectSingleNode(string.Format("//configuration/connectionstrings/connectionstring[@name='{0}']", name));

                if (deleteNode != null)
                {
                    var connectionstringsNode = k2ConfDoc.SelectSingleNode("//configuration/connectionstrings");
                    connectionstringsNode.RemoveChild(deleteNode);

                    using (var userStream = new IsolatedStorageFileStream(_k2ConfigFile, FileMode.Create, userStorage))
                        using (var cryptostream = new CryptoStream(userStream, Encryptor(), CryptoStreamMode.Write))
                        {
                            try
                            {
                                k2ConfDoc.Save(cryptostream);
                                userStream.Flush();
                            }
                            finally
                            {
                                k2ConfDoc = null;
                            }
                        }
                }
            }
        }