By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,635 Members | 2,187 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,635 IT Pros & Developers. It's quick & easy.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.

P: n/a
Hello All,
I am getting the following error on our production server, and I dont
get the same error on the development box.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.
here is the code that I used to create a table and then add columns to it
later, later I populate the rows in the table.

since its happening on the production box, so I cannot seem to debug it
corrently as to where the error is coming from.

ds.Tables.Add("tblADsUsers");

ds.Tables["tblADsUsers"].Columns.Add("ADsUser",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsDisplayName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsFirstName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsLastName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsOffice",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsEmailAddress",
Type.GetType("System.String"));

Thanks a lot.

any help would be great.

Imran.
Nov 19 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Your snippet contains not references to a byte[] so I am not sure about the
context, but bytes do not represent a string because a string takes into
account some type of encoding such as unicode or ascii.

You might want to take a look at Encoding.GetString(). If you know now the
bytes were encoded, then the Encoding (or a derived) class should allow you
convert to a string.

"Imran Aziz" <im***@tb2.net> wrote in message
news:%2***************@TK2MSFTNGP10.phx.gbl...
Hello All,
I am getting the following error on our production server, and I dont
get the same error on the development box.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.
here is the code that I used to create a table and then add columns to it
later, later I populate the rows in the table.

since its happening on the production box, so I cannot seem to debug it
corrently as to where the error is coming from.

ds.Tables.Add("tblADsUsers");

ds.Tables["tblADsUsers"].Columns.Add("ADsUser",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsDisplayName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsFirstName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsLastName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsOffice",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsEmailAddress",
Type.GetType("System.String"));

Thanks a lot.

any help would be great.

Imran.

Nov 19 '05 #2

P: n/a
Well I dont know where the byte[] is being returned, since I only get it on
the live box. But I think the error is thrown when I am trying to convert
the return values from the ADS call to string which works fine on my
production box. Here is the complete function.

Thanks a lot for your help.Please help me do the right conversion.

public DataSet GetFilteredADDomainUsers_memdatabase(String strFirstName,
String strLastName)

{

DataSet ds = new DataSet();

int bUserExists = 0;

try

{

String ADPath = ConfigurationSettings.AppSettings["ADPath"].ToString();

String ADUser = ConfigurationSettings.AppSettings["ADUser"].ToString();

String ADPass = ConfigurationSettings.AppSettings["ADPass"].ToString();

DirectoryEntry entryRoot = new DirectoryEntry("LDAP://RootDSE", ADUser,
ADPass);

string domain = entryRoot.Properties["defaultNamingContext"][0].ToString();

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://" + domain);

if (searchRoot != null)

{

DirectorySearcher search = new DirectorySearcher(searchRoot);

SearchResult result;

//search.Filter = GetFilterString(strFilter);

search.Filter = "(&(objectClass=Person)(&(sn=" + strLastName +
"*)(givenName=" + strFirstName + "*)))";
search.PropertiesToLoad.Add("samaccountname");

search.PropertiesToLoad.Add("sn");

search.PropertiesToLoad.Add("displayName");

search.PropertiesToLoad.Add("givenName");

search.PropertiesToLoad.Add("physicalDeliveryOffic eName");

search.PropertiesToLoad.Add("mail");

//SearchResult result;

SearchResultCollection resultCol = search.FindAll();

if (resultCol != null)

{

ds.Tables.Add("tblADsUsers");

ds.Tables["tblADsUsers"].Columns.Add("ADsUser",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsDisplayName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsFirstName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsLastName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsOffice",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsEmailAddress",
Type.GetType("System.String"));

//SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(sqlAdapter);

//sqlAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

for (int counter = 0; counter < resultCol.Count; counter++)

{

result = resultCol[counter];

if (result.Properties.Contains("samaccountname"))

{

String tmpUser;

tmpUser = result.Properties["samaccountname"][0].ToString();

bUserExists = CheckExistingUser(tmpUser.ToLower());

if (bUserExists == 0)

{

DataRow row = ds.Tables["tblADsUsers"].NewRow();

row["ADsUser"] = tmpUser;

if (result.Properties.Contains("displayName"))

{

row["ADsDisplayName"] = (String)result.Properties["displayName"][0];

}

else

{

row["ADsDisplayName"] = " ";

}

if (result.Properties.Contains("givenName"))

{

row["ADsFirstName"] = (String)result.Properties["givenName"][0];

}

else

{

if (result.Properties.Contains("displayName"))

{

row["ADsFirstName"] = (String)result.Properties["displayName"][0];

}

else

{

row["ADsFirstName"] = " ";

}

}

if (result.Properties.Contains("sn"))

{

row["ADsLastName"] = (String)result.Properties["sn"][0];

}

else

{

row["ADsLastName"] = " ";

}

if (result.Properties.Contains("physicalDeliveryOffic eName"))

{

row["ADsOffice"] =
(String)result.Properties["physicalDeliveryOfficeName"][0];

}

else

{

row["ADsOffice"] = " ";

}

if (result.Properties.Contains("mail"))

{

row["ADsEmailAddress"] = (String)result.Properties["mail"][0];

}

else

{

row["ADsEmailAddress"] = " ";

}
ds.Tables["tblADsUsers"].Rows.Add(row);

}

else

{

nUserExist++;

}

}

}

if (ds.Tables["tblADsUsers"].Rows.Count > 0)

{

return ds;

}

else

{

return null;

}

}

}

}

catch (Exception ex)

{

strError = ex.Message;

}

return null;

}
"Peter Rilling" <pe***@nospam.rilling.net> wrote in message
news:ec**************@TK2MSFTNGP12.phx.gbl...
Your snippet contains not references to a byte[] so I am not sure about
the context, but bytes do not represent a string because a string takes
into account some type of encoding such as unicode or ascii.

You might want to take a look at Encoding.GetString(). If you know now
the bytes were encoded, then the Encoding (or a derived) class should
allow you convert to a string.

"Imran Aziz" <im***@tb2.net> wrote in message
news:%2***************@TK2MSFTNGP10.phx.gbl...
Hello All,
I am getting the following error on our production server, and I dont
get the same error on the development box.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.
here is the code that I used to create a table and then add columns to it
later, later I populate the rows in the table.

since its happening on the production box, so I cannot seem to debug it
corrently as to where the error is coming from.

ds.Tables.Add("tblADsUsers");

ds.Tables["tblADsUsers"].Columns.Add("ADsUser",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsDisplayName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsFirstName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsLastName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsOffice",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsEmailAddress",
Type.GetType("System.String"));

Thanks a lot.

any help would be great.

Imran.


Nov 19 '05 #3

P: n/a
I am using the LDAP provider to get list of properties for users. the code
works fine on my development machine but when moved to production I get a
conversion error of.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.

Here is the code that generates error.

SearchResult result;
String tmpUser;

tmpUser = result.Properties["samaccountname"][0].ToString();

If I use Convert.ToString() to convert it I get System.byte[] as the return.

Can anyone please help me with this issue.

Imran.

"Imran Aziz" <im***@tb2.net> wrote in message
news:%2***************@TK2MSFTNGP10.phx.gbl...
Hello All,
I am getting the following error on our production server, and I dont
get the same error on the development box.

Unable to cast object of type 'System.Byte[]' to type 'System.String'.
here is the code that I used to create a table and then add columns to it
later, later I populate the rows in the table.

since its happening on the production box, so I cannot seem to debug it
corrently as to where the error is coming from.

ds.Tables.Add("tblADsUsers");

ds.Tables["tblADsUsers"].Columns.Add("ADsUser",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsDisplayName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsFirstName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsLastName",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsOffice",
Type.GetType("System.String"));

ds.Tables["tblADsUsers"].Columns.Add("ADsEmailAddress",
Type.GetType("System.String"));

Thanks a lot.

any help would be great.

Imran.

Nov 19 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.