我正在从Active Directory中读取属性[“thumbnailPhoto”]。
我的模型将其分配给:
public Image thumbnailPhoto { get; set; }
我的服务运行此代码以从Active Directory获取图像并将其放入我的模型中。
public Image GetUserPicture(string userName)
{
using (DirectoryEntry de = new DirectoryEntry("LDAP://server.com"))
using (DirectorySearcher ds = new DirectorySearcher(de))
{
ds.Filter = ("(&(objectCategory=person)(objectClass=User)(sAMAccountName=" + userName + "))");
ds.PropertiesToLoad.Add("thumbnailPhoto");
SearchResult rs = ds.FindOne();
using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
{
return Bitmap.FromStream(s);
}
}
}
我调用上面的方法并从这一行将它分配给Model:
user.thumbnailPhoto = GetUserPicture(rs.Properties["sAMAccountName"][0].ToString());
这一切似乎都有效,没有错误,我可以在调试器中看到user.thumbnailPhoto的类型为System.Drawing.Bitmap。
我现在被困在哪里是如何在网页上显示这个?
是否可以将此thumbnailPhoto
投放到Session["UserPhoto"]
,因为我会在每个页面上都需要它?
答案 0 :(得分:2)
我会将其转换为Base64
string
,然后将其作为来源。
using (MemoryStream s = new MemoryStream(rs.Properties["thumbnailPhoto"][0] as byte[]))
{
byte[] imageBytes = s.ToArray();
string base64String = Convert.ToBase64String(imageBytes);
}
<img src="image/png;base64,@Model.ImageBase64String" />