尝试将文件写入Azure中的LocalStorage时,为什么会出现UnauthorizedAccessException

时间:2011-04-03 23:55:33

标签: azure local-storage

我已经在我的网络角色中创建了一个名为“MyTestCache”的本地存储,就像在我的网站中一样 ServiceDefinition.csdef文件。但是当我调用System.IO.File.WriteAllBytes方法时,我得到一个UnauthorizedAccess异常。有谁知道会造成什么?我在下面的代码中创建目录时没有得到这个,只有在写时。我使用的是SDK 1.3。

 private void SaveFileToLocalStorage(byte[] remoteFile, string filePath)
    {
        try
        {
            LocalResource myIO = RoleEnvironment.GetLocalResource("MyTestCache");

            // Creates directory if it doesn't exist (ie the first time)
            if (!Directory.Exists(myIO.RootPath + "/thumbnails"))
            {
                Directory.CreateDirectory(myIO.RootPath + "/thumbnails");
            }

            string PathToFile = Path.Combine(myIO.RootPath + "/thumbnails", filePath);
            var path = filePath.Split(Char.Parse("/"));

            // Creates the directory for the content item (GUID)            
            if (!Directory.Exists(Path.Combine(myIO.RootPath + "/thumbnails", path[0])))
            {
                Directory.CreateDirectory(Path.Combine(myIO.RootPath + "/thumbnails", path[0]));
            }

            // Writes the file to local storage.
            File.WriteAllBytes(PathToFile, remoteFile);
        }
        catch (Exception ex)
        {
            // do some exception handling
            return;
        }

    }

1 个答案:

答案 0 :(得分:2)

检查ACL。在SDK 1.3中,默认情况下,Web角色在完整的IIS工作进程中启动,使用网络服务作为应用程序池的标识。确保网络服务帐户具有执行预期操作的权限。在您的情况下,您正在尝试创建子目录,因此很可能您至少需要写入权限。如果您的角色还修改了此目录上的ACL,则需要授予对此目录的完全访问权限。