为“IIS AppPool \ Name”权限设置FileSystemAccessRule失败,“部分或全部身份引用无法转换”

时间:2013-07-30 11:45:28

标签: c# permissions iis-7.5

我正在以编程方式克隆一个git repo,编译源代码和编译器。在R2 2008 Windows服务器上的IIS中创建新站点。

配置站点后,我需要为新的IIS AppPool Identity帐户设置权限;我正在尝试使用FileSystemAccessRule

// Set the Permissions
var dSiteRoot = new DirectoryInfo(cSiteRoot);

var oACL = dSiteRoot.GetAccessControl();
var cUser = "IIS APPPOOL\\" + cAppPoolName;

oACL.AddAccessRule(
    new FileSystemAccessRule(
        cUser, 
        FileSystemRights.FullControl, 
        InheritanceFlags.ObjectInherit, 
        PropagationFlags.InheritOnly, 
        AccessControlType.Allow
    )
);

dSiteRoot.SetAccessControl(
    oACL
);

使用以下消息创建FileSystemAccessRule的新实例时抛出异常:

  

无法翻译部分或全部身份参考。

我想知道用户是否还没有被创建;刚刚创建了&致力于AppPool&网站通过ServerManager所以我试图引用另一个,现有的&活动,IIS AppPool用户。这也失败了。 编辑我一定不能正确测试 - 请参阅下面的答案

我确实想知道我是否需要在字符串前面加上机器名称。我试图在System.Environment.MachineName之前添加MachineName,但是同样的错误也失败了。

如何引用IIS AppPool用户使用C#设置文件夹的权限?

1 个答案:

答案 0 :(得分:0)

以上C#是正确的,我错了,这是时间的关键。

我添加了一个循环,尝试通过AddAccessRule设置权限,如果失败我将线程设置为休眠50毫秒,然后再次尝试&等等,直到达到超时或成功;在所有情况下,它都成功进行了5次尝试。