ActiveDirectoryから写真を取得するために使用しているImageHandlerクラスがあります。ただし、取得できない場合に備えて、デフォルトの画像を表示したいと思います。使ってみreturn Bitmap.FromFile ( "~/images/default_person.jpg" );
ましたが、ファイルシステムのパスを探しているようです。
システムパスをコードにハードコーディングせずに、ソリューションの「images」フォルダーにある画像を指定したいと思います。
画像を取得しているコードは次のとおりです。
static Image GetUserPicture ( string userName )
{
DirectoryEntry myLdapConnection = SCDirectoryEntry.GetDirectoryEntry ( );
using ( DirectorySearcher dsSearcher = new DirectorySearcher ( myLdapConnection ) )
{
dsSearcher.Filter = String.Format ( "(SAMAccountName={0})", userName );
SearchResult result = dsSearcher.FindOne ( );
DirectoryEntry user = result.GetDirectoryEntry ( );
byte [ ] data = user.Properties [ "jpegPhoto" ].Value as byte [ ];
if ( data != null )
{
var s = new MemoryStream ( data );
return Bitmap.FromStream ( s );
}
//return default image here
return Bitmap.FromFile ( "~/images/default_person.jpg" );
}
}