如何在Razor中使用System.DirectoryServices.AccountManagement?

时间:2019-04-30 00:18:00

标签: asp.net razor directoryservices

我从NuGet安装了System.DirectoryServices.AccountManagement,并且可以在控制器中使用它。我正在尝试在剃刀视图中使用@UserPrincipal.Current.EmailAddress。我将名称空间添加到Views/Web.config

<system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.DirectoryServices.AccountManagement"/>
        </namespaces>
    </pages>
</system.web.webPages.razor>

这给我留下了一个错误,所以我还添加了程序集引用:

<system.web>
    <compilation>
        <assemblies>
            <add assembly="System.DirectoryServices.AccountManagement, Version=4.5.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </assemblies>
    </compilation>
</system.web>

我从sn -T获得了该公钥令牌。但我仍然收到此错误:

  

无法加载文件或程序集'System.DirectoryServices.AccountManagement,版本= 4.5.0,区域性=中性,PublicKeyToken = b77a5c561934e089'或其依赖项之一。系统找不到指定的文件。

我做错了什么,或者我还需要做什么?

2 个答案:

答案 0 :(得分:0)

仍然不知道为什么我不能直接引用System.DirectoryServices.AccountManagement中的类。但是按预期方式间接使用它们:

public static class UserHelper
{
    public static string GetEmail()
    {
        return UserPrincipal.Current.EmailAddress;
    }
}

我将以前的更改恢复为Views/Web.config,并添加了此类所在的名称空间。现在,我可以在剃刀中使用@UserHelper.GetEmail()

答案 1 :(得分:0)

System.DirectoryServices.AccountManagement的引用应在"Copy local"上有'True'
老实说,我认为没有任何理由应该起作用,因为那是一个框架库,但是更改该设置对我来说是有效的。