我已经在我的网络角色中创建了一个名为“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;
}
}
答案 0 :(得分:2)
检查ACL。在SDK 1.3中,默认情况下,Web角色在完整的IIS工作进程中启动,使用网络服务作为应用程序池的标识。确保网络服务帐户具有执行预期操作的权限。在您的情况下,您正在尝试创建子目录,因此很可能您至少需要写入权限。如果您的角色还修改了此目录上的ACL,则需要授予对此目录的完全访问权限。