【问题标题】:The type or namespace name 'DirectoryServices' does not exist in the namespace?命名空间中不存在类型或命名空间名称“DirectoryServices”?
【发布时间】:2012-05-28 07:01:53
【问题描述】:

CS0234:类型或命名空间名称“DirectoryServices”不存在 在命名空间“系统”中(您是否缺少程序集引用?)

此页面工作正常,显示来自直接服务的记录,没有错误。但现在它给出了上述错误。

 <asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="false" DataSourceID="odsUsers"
                                    AllowPaging="true" AllowSorting="true" Width="100%">
<Columns>
 <asp:TemplateField HeaderText="User Name">
 <ItemTemplate>

<%#((System.DirectoryServices.DirectoryEntry)Container.DataItem).Properties["userPrincipalName"].Value%>

   </ItemTemplate>
   </asp:TemplateField>
/Columns>
</asp:GridView>

项目构建成功,但是当我打开页面时出现错误

【问题讨论】:

  • 当您打开页面时,这是在您构建项目的同一台机器上吗?
  • 您是否在项目中添加了对System.DirectoryServices 程序集的引用??
  • @marc_s:是的 System.DirectoryServices 程序集已经添加。我也删除了这个并再次添加,但同样的错误。还有一个错误还有其他机器(不是在谈论开发服务器)。这个页面是过去很多天工作正常。我在解决方案中添加了一些库项目,一个是窗口服务
  • @mservidio:是的,我在构建项目的同一台机器上
  • 当我出于测试目的从 aspx 页面中删除上述代码并在页面加载事件中添加以下行时,它没有给出错误。"System.DirectoryServices.DirectoryEntry directoryEntry = new System.DirectoryServices.DirectoryEntry() ;"

标签: c# asp.net active-directory directoryservices


【解决方案1】:

添加目录服务引用后,右键单击reference 并转到properties。将"CopyLocal" 设置为真。

【讨论】:

  • 如果您碰巧没有在“解决​​方案资源管理器”面板顶部看到您的文件夹“参考”搜索“显示所有文件”选项。
【解决方案2】:

我很确定我完全错误地将我的应用程序从我的开发框“发布”到我的 IIS 框。但是,我找到了这个解决方案here,它对我有用。

如果您使用的是 Web 应用程序,则在您的 web.config 中添加以下代码。

<compilation debug="true" targetFramework="4.0" >
    <assemblies>
        <add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    </assemblies>
</compilation>

【讨论】:

    【解决方案3】:

    1 - 在“参考”上单击鼠标右键
    2 - 单击“添加引用...”
    3 - 点击“浏览”按钮
    4 - 在文件夹中找到以下文件:

    “C:\Program Files\Reference\Assemblies\Microsoft\Framework\.NETFramework\v4.6.1”

    -System.DirectoryServices.dll
    -System.DirectoryServices.AccountManagement.dll

    5 - 选择它们
    6 - 按“确定”按钮

    【讨论】:

    • 现在您可以从列表中选择,而不是浏览。
    • 2020 这仍然有效,尽管目录已更改为:C:\Program Files\Reference Assemblies\Microsoft\Framework\*version*
    【解决方案4】:

    对我有用的简单方法是右键单击 References => Add Reference,然后选择 System.DirectoryServices(和所需的子程序集)。

    【讨论】:

      【解决方案5】:

      我在 Visual Studio 2015 中使用针对 .NET Framework 4.5.2 的 MVC 项目遇到了这个问题。将目标框架更改为 .NET 4.5 解决了该问题。

      【讨论】:

        【解决方案6】:

        您需要在您的 asp.net 页面上添加一个导入指令。确保它完全合格。确保您在项目中也引用了程序集。

         <%@ Assembly Name="System.DirectoryServices, Version=2.0.0.0,
             Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
        

        【讨论】:

          【解决方案7】:

          看起来您需要(在您的项目中)添加对System.DirectoryServices 的引用。由于您在看起来像 aspx 标记页面中使用它,因此有时编译器会在“构建”期间让它们运行,但在您实际执行页面时会失败。

          【讨论】:

          • System.DirectoryServices 程序集已添加,我将其删除并再次添加,但同样的错误
          【解决方案8】:

          我遇到了同样的问题。我在我的 windows 文件夹中搜索了 DirectoryServices.dll。由于出现的所有版本都具有相同的大小,因此我选择了一个并将其复制到我网站的 bin 文件夹中。如果您没有 bin 文件夹,只需创建它。 一旦我这样做了,我就可以毫无错误地打开我的网页。

          【讨论】:

            【解决方案9】:

            如果在引用中添加程序集“System.DirectoryServices.AccountManagement”,它将起作用。添加 System.DirectoryServices 将不起作用。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-06-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-05-09
              • 2022-01-11
              • 2021-10-15
              • 2018-06-14
              相关资源
              最近更新 更多