我需要从存储在Active Directory上的数据库中的用户那里获取一些信息,我有一个简单的功能来执行此操作:
using (DirectoryEntry de = new DirectoryEntry("LDAP://ANYGIVENDOMAIN"))
{
using (DirectorySearcher adSearch = new DirectorySearcher(de))
{
adSearch.Filter = "(sAMAccountName=jdoe)";
SearchResult adSearchResult = adSearch.FindOne();
StringBuilder sb = new StringBuilder();
sb.AppendLine(adSearchResult.Properties["displayname"][0].ToString());
sb.AppendLine(adSearchResult.Properties["givenName"][0].ToString());
sb.AppendLine(adSearchResult.Properties["objectSid"][0].ToString());
sb.AppendLine(adSearchResult.Properties["description"][0].ToString());
sb.AppendLine(adSearchResult.Properties["objectGUID"][0].ToString());
}
}
从WinForm运行按我的意愿运行,但在SQL Server项目类型中,我无法将命名空间System.DirectoryServices添加到引用。
任何人都知道为什么?
此致
JE
答案 0 :(得分:2)
请参阅:Supported .NET Framework Libraries
不支持的库仍然可以 从您的托管存储中调用 程序,触发器,用户定义 函数,用户定义的类型和 用户定义的聚合。该 必须首先是不受支持的库 在SQL Server数据库中注册, 使用CREATE ASSEMBLY语句, 在它可以在你的代码中使用之前。 任何不受支持的库 注册并在服务器上运行 应该进行审查和测试 安全性和可靠性。
例如, System.DirectoryServices命名空间是 不支持。你必须注册 System.DirectoryServices.dll程序集 尽可能使用UNSAFE权限 从你的代码中调用它。 UNSAFE 许可是必要的,因为 在课堂上 System.DirectoryServices名称空间做 不符合国家外汇管理局的要求 EXTERNAL_ACCESS。欲获得更多信息, 请参阅CLR Integration Programming Model Restrictions和CLR Integration Code Access Security。