尝试在AD中删除域名时出错。这是我的代码:
string strAccount = HttpContext.Current.User.Identity.Name.ToString();
string strUserName = strAccount.Split("\\\\".ToCharArray())[1];
txtStrName.Text = strUserName;
string selectSQL = "SELECT sAMAccountName, mail FROM ActiveDirectories WHERE mail Is Not Null and sAMAccountName = '" + txtStrName.Text + "'";
SqlConnection con = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(selectSQL, con);
SqlDataReader reader = default(SqlDataReader);
try
{
con.Open();
reader = cmd.ExecuteReader();
reader.Read();
txtADName.Text = reader["sAMAccountName"].ToString();
txtEmail.Text = reader["mail"].ToString();
}
finally
{
reader.Close();
con.Close();
}
这似乎是我在做分裂的地方。我无法弄清楚这一点。请有人帮忙吗。谢谢!
答案 0 :(得分:2)
为什么不只是"\\"
而不是"\\\\"
?看起来你正在分裂2个反斜杠,它应该只有一个。
此外,在尝试解决第二项之前,请确保结果数组中有多个项目。
答案 1 :(得分:1)
HttpContext.Current.User.Identity.Name
可能不包含“\”char?
答案 2 :(得分:0)
您可以访问拆分中的第二项。你确定你不是指[0]? 你应该检查它是否有任何元素。
var elements = strAccount.Split("\\\\".ToCharArray());
var strUserName = elements.Count() > 1 ? elements[1] : "";
答案 3 :(得分:0)
假设您的strAccount
始终保证看起来像“域\用户”,您的拆分应如下所示:
string strUserName = strAccount.Split('\\')[1];
您可以使用Linq速记检查分割的所需部分(如BartVG指出的那样):
string strUserName = strAccount.Split('\\').Last();
只会返回strAccount的值,以防它不包含预期的分隔符char。