更改文件权限会导致IdentityNotMappedException(在Web服务器上运行代码时)

时间:2011-09-13 17:06:53

标签: asp.net .net permissions file-permissions

我有以下代码(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表明用户需要该目录的权限 - 但这不是问题。

1 个答案:

答案 0 :(得分:0)

要解决此问题,请将网站上的身份验证更改为“与应用程序池相同”(而不是匿名)。不是最好的答案,但已经尝试了其他一切。