0

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" );


        }
    }
4

1 に答える 1

0

使用できますServer.MapPath( "~/images/default_person.jpg" );

Server.MapPathは、MSDNページのここで説明されているように、この相対パスを物理パスに変換します。

于 2012-05-09T12:45:52.007 に答える