Windows Azure例外情况:";对路径XYZ.exe的访问被拒绝。”;

Windows Azure例外情况:";对路径XYZ.exe的访问被拒绝。”;,azure,Azure,我使用Windows Azure上的本地存储来存储临时文件。在那里,我调用一个.exe文件,对同一本地存储文件夹中的其他几个文件进行转换。问题是我总是遇到异常“对路径XYZ.exe的访问被拒绝” 我要提到以下几点: -我正在使用工人角色 -在服务定义文件中设置 并尝试向我正在访问的文件夹添加权限: public static void AddPermission(string absoluteFolderPath) { DirectoryInfo myDirect

我使用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文件转换

有人能帮我吗

非常感谢

解决方案:

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


谢谢您的帮助。

默认情况下,您的工作角色运行时很可能没有足够的权限允许更改Azure文件夹上的访问控制列表

有两种可能的选择:

  • 最佳:在启动时运行脚本以设置权限。有关详细信息,请参见此处的MSDN:。您需要设置
    executionContext=“提升”

    编写脚本本身的最佳方法是通过Powershell。这里有一个例子:。或者,编写一个控制台应用程序来执行相同的操作

  • 最简单,但安全性要低得多:在
    OnStart
    方法中设置安全性,并在服务定义文件include中运行整个worker角色提升



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

我已经设置了executionContext=“Highted”,但可能问题如下。我将ffmpeg.exe文件与要转换的文件一起直接下载到本地存储中。exe文件在本地存储中是否有问题??
<WebRole name="WebApplication2">
  <Runtime executionContext="elevated" />
  <Sites>