VB.NET将用户添加到通讯组列表。发生操作错误
这就是我得到的-VB.NET将用户添加到通讯组列表。发生操作错误,vb.net,directoryservices,Vb.net,Directoryservices,这就是我得到的- Public Shared Function GetDirectoryEntry() As DirectoryEntry Try Dim entryRoot As New DirectoryEntry("LDAP://RootDSE") Dim Domain As String = DirectCast(entryRoot.Properties("defaultNamingContext")(0), String) Di
Public Shared Function GetDirectoryEntry() As DirectoryEntry
Try
Dim entryRoot As New DirectoryEntry("LDAP://RootDSE")
Dim Domain As String = DirectCast(entryRoot.Properties("defaultNamingContext")(0), String)
Dim de As New DirectoryEntry()
de.Path = "LDAP://" & Domain
de.AuthenticationType = AuthenticationTypes.Secure
Return de
Catch
Return Nothing
End Try
End Function
Protected Sub rbAddUser_Click(sender As Object, e As EventArgs) Handles rbAddUser.Click
AddMemberToGroup("LDAP://DOMAIN.local/CN=" & !DISTRIBUTIONNAME! & ",CN=Users,DC=DOMAIN,DC=local", "/CN=" & !SELECTEDUSER! & ",CN=Users,DC=DOMAIN,DC=local")
End Sub
Private Sub AddMemberToGroup(ByVal bindString As String, ByVal newMember As String)
Dim ent As DirectoryEntry = GetDirectoryEntry()
ent.Properties("member").Add(newMember)
ent.CommitChanges()
End Sub
我希望这对人们来说足够容易阅读,不管怎样,组和用户都是由表中的用户选择的,当他们单击“添加”按钮时,我希望所选用户添加到所选通讯组列表中
当它到达CommitChanges()
时,我得到了这个错误
System.DirectoryServices.dll中发生类型为“System.DirectoryServices.DirectoryServicesMeException”的异常,但未在用户代码中处理其他信息:发生操作错误。错误-2147016672
这是流程模型应用程序池配置的一个常见问题,来自: 通过使用
元素,您可以在IIS 7及更高版本上配置应用程序池的许多安全、性能、运行状况和可靠性功能
此问题的存在是因为CommitChanges()
需要提升权限,可以通过将web应用程序设置为在NetworkManager
下运行来解决;这可以通过两种方式实现:
:
Using HostingEnvironment.Impersonate()
'Problem code goes here.
End Using
Identity
更改为NetworkService
我通过传递用户凭据解决了错误
Private Sub AddMemberToGroup(ByVal bindString As String, ByVal newMember As String)
Dim ent As New GetDirectoryEntry(bindString)
ent.Properties("member").Add(newMember)
ent.Username = "DOMAIN\USERNAME"
ent.Password = "PASSWORD"
ent.CommitChanges()
End Sub
然而,我的代码仍然不工作,我只是没有得到任何错误 这是一个web应用程序吗?我提供了一个答案,请查看。使用HostingEnvironment.Impersonate()不起作用。@Superseven是否尝试了第二种方法?是的。。。我得说这件事已经解决了。尽管我现在对这段代码感到迷茫,但我不再得到原始错误。