Проблема: я не могу понять, какую строку подключения использовать для подключения настольного приложения WPF к базе данных SQLite в хранилище файлов Azure.Благодаря Документации MSDN я могу получить доступ к CloudFile из приложения (поэтому у меня есть доступ к URI), но когда я передаю URI в строку соединения, чтобы создать соединение, а затем пытаюсь открытьПри подключении я получаю сообщение об ошибке, что мой URI недействителен.Соединение работает нормально, когда я пытаюсь подключиться к базе данных SQLite на моем жестком диске.Нужно ли передавать ключ или что-то в строку подключения SQLite для подключения к базе данных в хранилище файлов Azure?Это вообще возможно?
/// <summary>
/// Add all online (Azure file storage) data sources
/// </summary>
private void FindOnlineDataSources()
{
var accountName = "myAccountName";
var keyValue = "myKeyValue";
var useHttps = true;
var exportSecrets = true;
var storageCredentials = new StorageCredentials(accountName, keyValue);
var storageAccount = new CloudStorageAccount(storageCredentials, useHttps);
var connString = storageAccount.ToString(exportSecrets);
// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("myShare");
// Ensure that the share exists.
if (share.Exists())
{
// Get a reference to the root directory for the share.
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
// Get a reference to the directory we created previously.
CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("myDirectory");
// Ensure that the directory exists.
if (sampleDir.Exists())
{
// Get a reference to the file we created previously.
var fileList = sampleDir.ListFilesAndDirectories();
foreach (var fileTemp in fileList)
{
if (fileTemp is CloudFile && TestConnection(SQLiteOnlineConnectionBuilder(fileTemp.StorageUri.PrimaryUri.AbsoluteUri)))
{
// Store reference to data source
}
}
}
}
}
/// <summary>
/// Test data source connection to determine if it is accessible
/// </summary>
private bool TestConnection(DbConnection connection)
{
bool retval = false;
try
{
connection.Open();
connection.Close();
retval = true;
}
catch { }
return retval;
}
/// <summary>
/// Create SQLite connection from URI string
/// </summary>
private DbConnection SQLiteOnlineConnectionBuilder(string uri)
{
return new SQLiteConnection
{
ConnectionString = new SQLiteConnectionStringBuilder
{
Uri = uri,
ForeignKeys = true,
BinaryGUID = false,
}.ConnectionString
};
}
Справочная информация: я создаю настольное приложение для использования в своей компании.Данные для приложения хранятся в базе данных SQLite.У нас будет только 5 пользователей, которые будут одновременно получать доступ к данным, поэтому я решил, что нет необходимости пытаться настроить полноценный сервер - SQLite кажется отличным вариантом.
Однако я пытаюсь поместить базу данных SQLite в нашу учетную запись хранилища файлов Azure, чтобы несколько пользователей могли получить к ней доступ через настольное приложение, где бы у них не был доступ в Интернет.У нас нет центральной сети компании, поэтому я решил, что хранилище файлов Azure поможет.