使用 C# 从活动目录检索并显示用户图像

Gay*_*ara 5 active-directory c#-4.0

我有一个用 C# 开发的网站。该网站将托管在我们组织的本地内联网中。用户使用 Windows 身份验证通过其 Windows ID 进行身份验证。当用户访问该网站时,我想在用户的活动目录中显示图片。

这段代码使我能够获取用户图像。图像Response.BinaryWrite(bb); Response.Flush();将显示在空白页面中。相反,我想在同一页面的 div 内显示我的图片。我怎样才能做到这一点?

using System;
using System.DirectoryServices;
using System.Linq;


namespace thumbnailTest
{
public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String myUser = User.Identity.Name.Split('\\')[1];

        if (myUser == null)
        {
            Response.Redirect("app_graphics/user.jpg");                
        }

        Response.ContentType = "image/jpeg";
        Response.Clear();
        Response.BufferOutput = true;

        DirectoryEntry de = new DirectoryEntry();
        de.Path = "LDAP://";

        DirectorySearcher search = new DirectorySearcher();
        search.SearchRoot = de;
        search.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" +     myUser + "))";
        search.PropertiesToLoad.Add("samaccountname");
        search.PropertiesToLoad.Add("thumbnailPhoto");

        SearchResult user;
        user = search.FindOne();

        String userName;

        if (user == null)
        {
            Response.Redirect("app_graphics/user.jpg");               
        }
        else
            userName = (String)user.Properties["sAMAccountName"][0];

        try
        {
            byte[] bb = (byte[])user.Properties["thumbnailPhoto"][0];       
            Response.BinaryWrite(bb);
            Response.Flush();
        }
        catch
        {
            Response.Redirect("app_graphics/user.jpg");
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n M -5

您应该将带有 src url 的 img 标记添加到您编写的处理程序中(可以说它应该是用于 Web 表单的 HttpHandler)我想该 url 看起来像

<img src="http://myintranetsite/ADImageHandler alt="" />
Run Code Online (Sandbox Code Playgroud)