web-dev-qa-db-fra.com

Le type ou nom de l'espace de noms 'DirectoryServices' n'existe pas dans l'espace de noms?

CS0234: Le type ou le nom de l'espace de noms 'DirectoryServices' n'existe pas dans l'espace de noms 'System' (il vous manque une référence Assembly?)

Cette page fonctionnait bien, affichez les enregistrements directement des services sans erreur. mais maintenant cela donne l'erreur ci-dessus. 

 <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>

Le projet se construit avec succès, mais lorsque j'ouvre la page, il génère une erreur.

15
Ali

Après avoir ajouté votre référence de services d’annuaire, cliquez avec le bouton droit sur reference et accédez à properties. Définissez "CopyLocal" sur true. 

40
Kevin

Je suis à peu près sûr de "publier" mon application de manière totalement incorrecte à partir de ma zone de développement vers la zone IIS. Cependant, j'ai trouvé cette solution ici , et cela a fonctionné pour moi.

Si vous utilisez une application Web, ajoutez dans votre web.config le code suivant.

<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>

1 - Cliquez sur le bouton gauche de la souris sur "Refrences"
2 - Cliquez sur "Ajouter une référence ..."
3 - Cliquez sur le bouton "Parcourir"
4 - Trouver les fichiers suivants dans le dossier:

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

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

5 - Sélectionnez-les
6 - Appuyez sur le bouton "OK"

9
Ali Reza

J'ai rencontré ce problème dans Visual Studio 2015 avec un projet MVC qui était destiné à .NET Framework 4.5.2. Changer le framework cible en .NET 4.5 a résolu le problème.

2
DVK

Vous devez ajouter une directive d'importation sur votre page asp.net. Assurez-vous qu'il est pleinement qualifié. Assurez-vous également de faire référence à l'Assemblée dans votre projet.

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

Pour moi, le moyen le plus simple était de cliquer avec le bouton droit de la souris sur Références => Ajouter une référence, puis de sélectionner System.DirectoryServices (et les sous-ensembles nécessaires).

1
ShamPooSham

Cela fonctionnera si Assembly "System.DirectoryServices.AccountManagement" est ajouté dans les références. L'ajout de System.DirectoryServices ne fonctionnera pas.

0
Faiyaz

J'ai eu le même problème. J'ai fait une recherche pour DirectoryServices.dll dans mon dossier Windows. Comme toutes les versions proposées avaient la même taille, j'en ai choisi une et je l'ai copiée dans le dossier bin de mon site Web. Si vous ne possédez pas de dossier bin, créez-le simplement… .. Une fois fait, j'ai pu ouvrir ma page Web sans erreur.

0
Eldritch

On dirait que vous devez ajouter une référence (dans votre projet) à System.DirectoryServices . Comme vous l'utilisez dans ce qui ressemble à une page de balisage aspx, le compilateur laisse parfois ceux-ci voler pendant la "construction" mais échouent lorsque vous exécutez la page.

0
Nate