C# 无法快速响应广告检索
我正在开发一个SharePoint应用程序,该应用程序需要来自指定Windows Server 2003 Active Directory组织单位的用户 首先,我不关心DirectoryServices对象上的“Dispose”和“Close”操作。在这一点上,检索操作快速而成功 但这会在尝试2次后导致“服务器无法运行”错误。这个错误使得整个应用程序的运行更糟糕,就像停止其他AD操作一样 然后,我通过在每个DirectoryEntry、DirectorySearcher和SearchResultCollection对象上添加语句来纠正这个错误 然后,我已经达到一个点,我不再得到“服务器不运行”错误。但是,当我尝试使用DirectorySearcher.FindAll方法从AD检索用户1次或多次时,第一个方法运行迅速且成功,其他方法运行较慢但成功。它需要一段超时时间。你能帮我解决一下我的情况吗 以下是示例代码:C# 无法快速响应广告检索,c#,sharepoint,active-directory,directoryservices,C#,Sharepoint,Active Directory,Directoryservices,我正在开发一个SharePoint应用程序,该应用程序需要来自指定Windows Server 2003 Active Directory组织单位的用户 首先,我不关心DirectoryServices对象上的“Dispose”和“Close”操作。在这一点上,检索操作快速而成功 但这会在尝试2次后导致“服务器无法运行”错误。这个错误使得整个应用程序的运行更糟糕,就像停止其他AD操作一样 然后,我通过在每个DirectoryEntry、DirectorySearcher和SearchResult
using (DirectoryEntry directoryEntry = new DirectoryEntry(connectionString, userName, password))
{
using (DirectorySearcher search = new DirectorySearcher(directoryEntry))
{
search.SearchScope = SearchLevel.OneLevel;
search.ReferralChasing = ReferralChasingOption.All;
search.Filter = filter;
search.SizeLimit = 200;
//Limits the property count for search result
SetUserDirectorySearcherPropertiesToLoad(search);
using (SearchResultCollection result = search.FindAll())
{
foreach (SearchResult searchResult in result)
{
// Get user attributes
}}}}
提前谢谢这里一切似乎都很正常。我使用的是类似的东西,唯一值得一提的区别是我通常将“propertiesToLoad”参数传递给DirectoryEntry的构造函数,以及将过滤器传递给DirectorySearcher的构造函数
另一个区别是,您正在为DirectoryEntry使用“用户名”和“密码”——也许值得使用应用程序池标识?我通常对这些调用执行
SPSecurity.RunWithElevatedPrivileges(方法指针)
。系统事件日志中是否存在任何Schannel错误?广告的版本是什么(2000年、2003年等)?广告在2003年起作用。事件查看器看起来不错。我尝试了两种方法,但都没有任何效果。应用程序池标识在Active Directory中没有所需的特权,就像向任何组添加任何域成员一样。所以我必须从配置文件中获取凭据。你能举个例子,看看你的变量connectionString
和filter
是什么样子吗?我的连接字符串是LDAP://dcname/OU=ou1,OU=ou2,DC=dcname我的过滤器是(&(&(ObjectClass=person))(&(!memberOf=CN=Students,OU=UEPOU,DC=lst,DC=local)(!memberOf=CN=Instructors,OU=UEPOU,DC=lst,DC=local)(!memberOf=CN=Directors,OU=UEPOU,DC=lst,DC=local)(!userAccountControl:1.2.840.113556.1.4.803:=2)))我知道这可能看起来很复杂,但这些变量在LDAP浏览器上工作。不,LDAP查询也可以。我只是觉得查询可能太不具体了,您得到了很多结果。但情况似乎并非如此。ReferralChasing
是否故意设置为All
?我认为这可能需要一些时间。但是r、 它没有解释为什么第一次执行速度快,第二次执行速度慢。谢谢你的提示。我不是故意设置ReferralChasing属性的。它是代码示例中最常见的DirectorySearcher属性。我将尝试将该属性设置为None,并在开始工作时查找结果。