我正在以编程方式克隆一个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#设置文件夹的权限?
答案 0 :(得分:0)
以上C#是正确的,我错了,这是时间的关键。
我添加了一个循环,尝试通过AddAccessRule
设置权限,如果失败我将线程设置为休眠50毫秒,然后再次尝试&等等,直到达到超时或成功;在所有情况下,它都成功进行了5次尝试。