Windows Azure例外情况:";对路径XYZ.exe的访问被拒绝。”;
我使用Windows Azure上的本地存储来存储临时文件。在那里,我调用一个.exe文件,对同一本地存储文件夹中的其他几个文件进行转换。问题是我总是遇到异常“对路径XYZ.exe的访问被拒绝” 我要提到以下几点: -我正在使用工人角色 -在服务定义文件中设置 并尝试向我正在访问的文件夹添加权限:Windows Azure例外情况:";对路径XYZ.exe的访问被拒绝。”;,azure,Azure,我使用Windows Azure上的本地存储来存储临时文件。在那里,我调用一个.exe文件,对同一本地存储文件夹中的其他几个文件进行转换。问题是我总是遇到异常“对路径XYZ.exe的访问被拒绝” 我要提到以下几点: -我正在使用工人角色 -在服务定义文件中设置 并尝试向我正在访问的文件夹添加权限: public static void AddPermission(string absoluteFolderPath) { DirectoryInfo myDirect
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:。您需要设置
编写脚本本身的最佳方法是通过Powershell。这里有一个例子:。或者,编写一个控制台应用程序来执行相同的操作executionContext=“提升”
- 最简单,但安全性要低得多:在
方法中设置安全性,并在服务定义文件include中运行整个worker角色提升OnStart
但是,我真的不建议这样做,因为这对于运行在公共云中的某些东西来说是一个可怕的安全漏洞。我已经设置了executionContext=“Highted”,但可能问题如下。我将ffmpeg.exe文件与要转换的文件一起直接下载到本地存储中。exe文件在本地存储中是否有问题??
<WebRole name="WebApplication2">
<Runtime executionContext="elevated" />
<Sites>