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

Posted

技术标签:

【中文标题】更改文件权限会导致 IdentityNotMappedException(在 Web 服务器上运行代码时)【英文标题】:Changing file permissions results in IdentityNotMappedException (when code is ran on web server) 【发布时间】:2011-11-16 08:51:18 【问题描述】:

我有以下代码 (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 不存在(确实存在)。我的下一步是输出机器上的用户和组,看看我的代码认为确实存在什么。与此同时,有人知道为什么,或者是什么原因造成的吗?

此代码在我的本地机器上运行良好,但在我的网络服务器上运行时却不行。应用程序池作为网络服务运行,并且网络服务器对文件所在的文件夹具有完全权限。我注意到 this question 表明用户需要对目录的权限 - 但这不是问题。

【问题讨论】:

【参考方案1】:

要解决此问题,请将网站上的身份验证更改为“与应用程序池相同”(而不是匿名)运行。不是最佳答案,但已尝试其他所有方法。

【讨论】:

以上是关于更改文件权限会导致 IdentityNotMappedException(在 Web 服务器上运行代码时)的主要内容,如果未能解决你的问题,请参考以下文章

Android:从设置外部更改相机权限会导致应用程序共享首选项清除

使用git签出文件时如何找出导致文件权限更改的原因?

将 git 存储库移动到 nfs 会导致权限错误

登录时更改访问者的权限组

jenkins权限配置不对导致jenkins无法登陆

在perl的反引号中使用chmod后导致权限的异步更改的原因