6

Microsoft の次のガイドに従って、既存の ASP.NET Web サイトに Active Directory 機能を追加する作業を行っています: http://support.microsoft.com/kb/326340。長いプロセスでしたが、今私が立ち往生しているのは、「GetGroup()」などの特定の関数を使用するために AccountManagement クラスにアクセスできないことです。

DirectoryServices には問題なくアクセスできますが、アカウント管理にはアクセスできません。次のコードを使用して参照をテストすると:

Response.Write(System.DirectoryServices.AccountManagement.Principal.GetGroups())

次のエラーが表示されます: BC30456: 'AccountManagement' は 'DirectoryServices' のメンバーではありません。

このアセンブリ タグは既に web.config ページに追加しています。

<add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

また、両方の名前空間をインポートしています:

<%@ Import Namespace="System.DirectoryServices" %>
<%@ Import Namespace="System.DirectoryServices.AccountManagement" %>

そして、これはエラーページに表示される私のバージョン情報です:

バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.34237

VS 2010 でこの Web サイトを編集しています。不足しているものと、AccountManagement をここに追加するにはどうすればよいですか? 正しくインポートしていないのでしょうか、それとも .dll が見つからないかどうかを確認できる場所はありますか?

4

2 に答える 2

5

Reg Edit の提案に従って試してみましたが、アプリケーションが web.config に記述されている参照を見つけることができないという別のエラーが発生しました。数時間後、このスタックオーバーフローの回答に出会いました。

System.DirectoryServices.AccountManagementへの参照には、 「 True」に「ローカルにコピー」が必要であると書かれています。正直なところ、それが機能する理由はわかりません。なぜなら、それはフレームワーク ライブラリだからですが、その設定を変更するとうまくいきました。

次のようなことができます。

using (var context = new PrincipalContext(ContextType.Domain))
{
    var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
    var firstName = principal.GivenName;
    var lastName = principal.Surname;
}

System.DirectoryServices.AccountManagementアセンブリへの参照を追加する必要があります 。

次のように Razor ヘルパーを追加できます。

@helper AccountName()
    {
        using (var context = new PrincipalContext(ContextType.Domain))
    {
        var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
        @principal.GivenName @principal.Surname
    }
}

コントローラーではなくビューからこれを行う場合は、web.config にもアセンブリ参照を追加する必要があります。

<add assembly="System.DirectoryServices.AccountManagement" />

の下に追加しconfiguration/system.web/assembliesます。

From: Answer To: .net MVC 3 イントラネット アプリでユーザーのフル ネームを取得するにはどうすればよいですか?

于 2016-05-31T17:54:49.640 に答える