我在asp.net mvc 2.0网站上使用了一个非常简单的Ldap查询:
String ldapPath = ConfigReader.LdapPath; String emailAddress = null;
try
{
DirectorySearcher search = new DirectorySearcher(ConfigReader.LdapPath);
search.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(objectSid={0})) ", securityIdentifierValue);
// add the mail property to the list of props to retrieve
search.PropertiesToLoad.Add("mail");
var result = search.FindOne();
if (result == null)
{
throw new Exception("Ldap Query with filter:" + search.Filter.ToString() + " returned a null value (no match found)");
}
else
{
emailAddress = result.Properties["mail"][0].ToString();
}
}
catch (ArgumentOutOfRangeException aoorEx)
{
throw new Exception( "The query could not find an email for this user.");
}
catch (Exception ex)
{
//_log.Error(string.Format("======!!!!!! ERROR ERROR ERROR !!!!! in LdapLookupUtil.cs getEmailFromLdap Exception: {0}", ex));
throw ex;
}
return emailAddress;
它在我的localhost机器上运行正常。当我在服务器上运行VS2010时,它工作正常。它在部署时总是返回null结果。
这是我的web.config:
Visual Studio中的Asp.Net配置选项。
可以在中找到完整的设置和注释列表
machine.config.comments通常位于
\的Windows \ Microsoft.Net \框架\ V2.X \配置
- >
部分启用配置 安全认证方式使用的 ASP.NET识别传入的用户。 - >
<!--
- &GT; 部分启用配置 如果/当发生未处理的错误时该怎么办 在执行请求期间。特别, 它使开发人员能够配置html错误页面 显示以代替错误堆栈跟踪。 - &GT;
我在默认的应用池下运行它。
有人看到了这个问题吗?这让我发疯了!
答案 0 :(得分:0)
好的,所以我忘了添加我已经将运行默认应用程序池的用户帐户更改为具有auth运行LDAP查询的用户。