Active directory og asp.net. "datatype cannot be converted"
Jeg har et lille intranet med 60 clienter og 6 servere. Web og domain er på 2 forskellige servere. Jeg prøver på at læse i ad'et fra web-serveren ved hjælp af følgende lille aspx side:<%@ Page Language="C#" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Text"%>
<%@ import Namespace="System.Web.UI.WebControls" %>
<script runat="server">
private void Page_Load(object sender, EventArgs e)
{
string dom = "cgedb";
StringBuilder result = new StringBuilder();
int count = 0;
result.Append("Navnet på dit domain : ");
result.Append(dom + "<br />");
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://" + dom);
System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=user)");
result.Append("Listing of users in the Active Directory<br />");
result.Append("========================================<br />");
foreach(System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
try
{
System.DirectoryServices.DirectoryEntry de=resEnt.GetDirectoryEntry();
result.Append("Display Name : " + de.Properties["DisplayName"].Value.ToString());
result.Append("Email : " + de.Properties["Mail"].Value.ToString());
result.Append("Title : " + de.Properties["Title"].Value.ToString());
result.Append("User Name : " + de.Properties["sAMAccountName"].Value.ToString());
result.Append("First Name : " + de.Properties["GivenName"].Value.ToString());
result.Append("Last Name : " + de.Properties["sn"].Value.ToString());
result.Append("Initials : " + de.Properties["Initials"].Value.ToString());
result.Append("Company : " + de.Properties["Company"].Value.ToString());
result.Append("Department : " + de.Properties["Department"].Value.ToString());
result.Append("Telephone No. : " + de.Properties["TelephoneNumber"].Value.ToString());
}
catch(Exception ex)
{
result.Append(ex.ToString() + "<br />");
}
result.Append("=========== End of user =============<br />");
count++;
}
result.Append("=========== End of Listing =============<br /> Amount of users : " + count.ToString());
label1.Text = result.ToString();
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:Label id="label1" runat="server"></asp:Label>
</form>
</body>
</html>
Når jeg så afvikler koden får jeg denne fejl:
System.Runtime.InteropServices.COMException (0x8000500C): The Active Directory datatype cannot be converted to/from a native DS datatype at System.DirectoryServices.Interop.IAds.GetEx(String bstrName) at System.DirectoryServices.PropertyValueCollection.PopulateList() at System.DirectoryServices.PropertyCollection.get_Item(String propertyName) at ASP.NewFile_aspx.Page_Load(Object sender, EventArgs e) in "peger på den første linie hvor jeg prøver at hive noget ud af properties samlingen. inde i try - catchen."
Min web.config :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true"/>
<customErrors mode="Off"/>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true" />
</system.web>
</configuration>
Det har sikkert noget med sikkerheden at gøre men jeg kan ikke finde ud af det. Håber der er en som kan hjælpe mig.