如何从代码写入现有数据库的SecuredSettings

时间:2014-04-17 07:51:10

标签: ravendb

我正在尝试从代码为现有数据库设置PeriodicBackups。 已在web.config中启用PeriodicBackups包。

我目前正在使用此代码:

            using (var session = systemStore.OpenSession())
            {
                var databaseDocument = session.Load<DatabaseDocument>("Raven/Databases/MyDatabase");
                if (databaseDocument != null)
                {
                    databaseDocument.Settings.Add("Raven/AzureStorageAccount", "MyStorageAccount");                        
                    databaseDocument.SecuredSettings.Add("Raven/AzureStorageKey", "abc123");
                    session.SaveChanges();
                }
            }

这导致数据库“MyDatabase”的以下设置:

{
  "Id": "MyDatabase",
  "Settings": {
    "Raven/DataDir": "~\\Databases\\MyDatabase",
    "Raven/AzureStorageAccount": "MyStorageAccount"
  },
  "SecuredSettings": {
    "Raven/AzureStorageKey": "<data could not be decrypted>"
  },
  "Disabled": false
}

而且PeriodicBackups自然不起作用。 我想这可能是因为AzureStorageKey无法解密。 我应该加密我自己写给SecuredSettings的值吗?如果是的话,我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您有安全设置,则无法以这种方式直接写入sys文档。 您需要使用store.DatabaseCommands.Admin.CreateDatabase()方法,该方法知道如何处理此问题。