从Active Directory获取用户照片不在服务器上工作

时间:2015-01-04 06:12:20

标签: asp.net .net c#-4.0 dns active-directory

我正在开发一个内部网站,该网站直接从Windows身份验证获取用户名,然后从以下功能获取更多来自活动目录的数据,如用户图像和用户电子邮件等

public Boolean userAuth()
{
    String myUser = Environment.UserName; 
    if (myUser == null)
    {
        return false; 
    }


    DirectoryEntry de = new DirectoryEntry();
    de.Path = "LDAP://mydomain.com";
    DirectorySearcher search = new DirectorySearcher();
    search.Filter = "(SAMAccountName=" + myUser + ")";
    search.PropertiesToLoad.Add("cn");
    search.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" +myUser + "))";
    search.PropertiesToLoad.Add("samaccountname");
    search.PropertiesToLoad.Add("thumbnailPhoto");
    search.PropertiesToLoad.Add("Company");
    SearchResult user;
    user = search.FindOne();
    String userName;
    userName = Convert.ToString(user.Properties["sAMAccountName"][0]);
    byte[] bb = (byte[])user.Properties["thumbnailPhoto"][0];
    string imgString = Convert.ToBase64String(bb);
    Session["UserPhoto"] = String.Format("<img width='40' src=\"data:image/Bmp;base64,{0}\">", imgString);
    result = search.FindOne();
    if (null == result)
    {
        return false;
    }

    return true;
}

当我在我的本地电脑上运行该网站时,我的电脑连接到域它工作正常,但当我把它放在公司应用服务器 Environment.UserName不会返回用户名,因此我使用System.Web.HttpContext.Current.User.Identity.Name.Replace("mydomain","")但它会返回用户 null

我想从AD获取用户照片以在Intranet站点中使用它。

1 个答案:

答案 0 :(得分:0)

我在iis应用程序池预先设置中找到了答案,将进程模块标识设置为已经在域中的用户