将Realm Sync与Azure函数一起使用

时间:2019-08-02 22:10:18

标签: c# azure realm azure-functions realm-cloud

我正在尝试在Azure函数中使用Realm Cloud,但它一直给我一个错误:

make_dir() failed: Permission denied Path: /realm-object-server/

是否可以将Azure Functions配置为具有创建文件的权限?我是Azure函数的新手,这是我的第一个,所以我不确定所有细节。

3 个答案:

答案 0 :(得分:1)

我对Realm不熟悉,但是默认情况下函数具有与文件系统交互的权限。有关应用服务文件系统的信息,请参见以下链接(这也适用于功能): https://docs.microsoft.com/en-us/azure/app-service/operating-system-functionality#file-access https://github.com/projectkudu/kudu/wiki/Understanding-the-Azure-App-Service-file-system

如果使用从程序包运行来部署该功能,则wwwroot为只读。但是,由于错误消息中的路径未指向wwwroot,因此这可能不是问题。

我最好的猜测是,失败的代码试图在不适当的位置写入。上面链接中的信息应有助于解决该问题。也许检查一下realm是否具有配置设置,该设置可让您指定应该在其中创建“ realm-object-server”的位置。

答案 1 :(得分:1)

我找到了一个解决方案。在Azure函数内部,您只能在temp文件夹内创建任何文件或文件夹。因此,如果您使用以下同步配置,则应该可以使用。它对我有用。

var configuration = new FullSyncConfiguration(new Uri("/~/<your-realm-name>", UriKind.Relative), _realmUser, Path.Combine(Path.GetTempPath(), "realm-object-server"));

因此,基本上,这里您要传递文件夹名称以将域存储在本地。如果您没有传递文件夹名称,它将尝试将其存储在默认位置,您将在该位置收到访问错误。

答案 2 :(得分:0)

您可以使用

SyncConfigurationBase.Initialize(UserPersistenceMode.NotEncrypted, basePath: Path.GetTempPath());