Windows Azure异常:“拒绝访问路径XYZ.exe。”

时间:2011-09-27 11:31:21

标签: azure

我在Windows Azure上使用本地存储来存储临时文件。在那里,我调用.exe文件来转换同一本地存储文件夹中的其他几个文件。问题是我总是得到异常“访问路径XYZ.exe被拒绝。”。

我应该提到以下内容: - 我正在使用工人角色 - 在服务定义文件中设置

并尝试为我正在访问的文件夹添加权限:

    public static void AddPermission(string absoluteFolderPath)
    {
        DirectoryInfo myDirectoryInfo = new DirectoryInfo(absoluteFolderPath);

        DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
        myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(
        "NETWORK SERVICE",
        FileSystemRights.FullControl,
        AccessControlType.Allow));
        myDirectoryInfo.SetAccessControl(myDirectorySecurity);
    }

更新 我现在尝试使用此代码:

     public static void FixPermissions()
    {
        var tempDirectory = RoleEnvironment.GetLocalResource("localStorage").RootPath;
        Helper.addPermission(tempDirectory);

        var dir = new DirectoryInfo(tempDirectory);
        foreach (var d in dir.GetDirectories())
            Helper.addPermission(d.FullName);
    }

    private  static void addPermission(string path)
    {
        FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", 
                                                                                     FileSystemRights.FullControl,
                                                                                     InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
                                                                                     PropagationFlags.None, AccessControlType.Allow);
        DirectoryInfo directoryInfo = new DirectoryInfo(path);
        DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
        directorySecurity.AddAccessRule(everyoneFileSystemAccessRule);
        directoryInfo.SetAccessControl(directorySecurity);
    }

我得到一个非常奇怪的页面行为。我仍然得到错误,但有时一些文件被ffmpeg.exe文件转换。

有人能帮帮我吗?

非常感谢。

SOLUTION:

所以似乎问题是我在本地存储中运行.exe文件,因此遇到了给定的安全问题。将.exe放入应用程序并直接引用解决了我的问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

默认情况下,您的辅助角色很可能无法以足够的权限运行,以允许更改Azure文件夹上的访问控制列表。

有两种可能的选择:

<WebRole name="WebApplication2">
  <Runtime executionContext="elevated" />
  <Sites>

但是,我真的不建议这样做,因为它对于在公共云中运行的东西来说是一个可怕的安全漏洞。