我一直致力于向一个已经存在的ASP.NET网站添加Active Directory功能,遵循微软的指南:http://support.microsoft.com/kb/326340。这是一个很长的过程,但是我现在坚持的是不能访问AccountManagement类来使用某些函数,比如"GetGroup()“。
我可以很好地访问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" %>
这是我的版本信息,显示在错误页面上:
版本信息:微软.NET框架版本:4.0.30319;ASP.NET版本:4.0.30319.34237
我正在编辑这个网站VS 2010。我缺少了什么,怎么才能在这里添加AccountManagement?我是没有正确导入它,还是有什么地方可以检查是否缺少.dll?
发布于 2014-09-18 16:44:13
虽然在标记中导入两个命名空间,但只引用System.DirectoryServices.dll
。AccountManagement部件位于单独的dll中。
添加对web.config的另一个引用:
<add assembly="System.DirectoryServices.AccountManagement ...
发布于 2016-05-31 17:54:49
我尝试了Reg的建议,但是后来我遇到了另一个错误,在这个错误中我的应用程序找不到web.config中描述的引用。几个小时后,我偶然发现了this stackoverflow answer。
它说,对System.DirectoryServices.AccountManagement的引用应该在“True”上有“复制本地”。老实说,我看不出为什么要这样做,因为这是一个框架库,但是更改设置对我来说是有效的。
你可以这样做: 使用(var context = new PrincipalContext(ContextType.Domain)) { var主体= UserPrincipal.FindByIdentity(context,User.Identity.Name);var firstName = principal.GivenName;var lastName = principal.Surname;} 您需要添加对
System.DirectoryServices.AccountManagement
程序集的引用。 您可以添加如下所示的Razor助手: @helper AccountName() { var (var context = new PrincipalContext(ContextType.Domain)) {var主体= UserPrincipal.FindByIdentity(context,User.Identity.Name);@principal.GivenName @principal.Surname } 如果您从视图(而不是控制器)缩进此操作,则还需要向web.config添加程序集引用: 将其添加到configuration/system.web/assemblies
下。
来自:Answer To: How do I get the full name of a user in .net MVC 3 intranet app?
https://stackoverflow.com/questions/25917186
复制相似问题