我有以下代码(from msdn)来设置文件权限:
' Adds an ACL entry on the specified file for the specified account.
Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
' Get a FileSecurity object that represents the
' current security settings.
Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
' Add the FileSystemAccessRule to the security settings.
Dim accessRule As FileSystemAccessRule = New FileSystemAccessRule(account, rights, controlType)
fSecurity.AddAccessRule(accessRule)
' Set the new access settings.
File.SetAccessControl(fileName, fSecurity)
End Sub
我使用小组IIS_IUSRS
(我已尝试过ComputerName/IIS_IUSRS
)来调用此内容,并且我正在尝试应用FileSystemRights.FullControl
但导致此错误:
System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated
这表明IIS_IUSRS不存在(确实如此)。我的下一步是输出计算机上的用户和组,以查看我的代码认为存在的内容。同时有人知道为什么,或者是什么导致这个?
此代码在我的本地计算机上运行正常,但在我的Web服务器上运行时则无效。应用程序池作为网络服务运行,网络服务器对文件所在的文件夹具有完全权限。我注意到this question表明用户需要该目录的权限 - 但这不是问题。
答案 0 :(得分:0)
要解决此问题,请将网站上的身份验证更改为“与应用程序池相同”(而不是匿名)。不是最好的答案,但已经尝试了其他一切。