我正在尝试向表格添加电子邮件,但它丢失了电子邮件中的错误"prashhanth@oberonit.com".我没有看到电子邮件中有任何错误.我添加了其他电子邮件,但不是这个.
列RemovedEmail是varchar(50),null
"字符串或二进制数据将被截断.
该语句已被终止."
var constultantUser = intensifyDb.ConsultantUsers.FirstOrDefault(x => x.Email == email);
// Delete the item
if (constultantUser != null)
{
intensifyDb.DeleteObject(constultantUser);// Save changes
intensifyDb.SaveChanges();
}
if (!intensifyDb.RemovedEmails.Any(x => x.RemovedEmails == email))
{
RemovedEmail consultant = new RemovedEmail
{
RemovedEmails = email
};
intensifyDb.AddToRemovedEmails(consultant);
intensifyDb.SaveChanges(); // Exception throwing here.
}
Run Code Online (Sandbox Code Playgroud)
正如@Bradley的要求
完整代码
protected void btnAdd_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(txtEmails.Text))
{
string txt = txtEmails.Text;
string[] lst = txt.Split(new Char[] { '\n', '\r' },
StringSplitOptions.RemoveEmptyEntries);
string email = string.Empty;
var removedEmail = string.Empty;
using (SqlConnection connection = new SqlConnection(connectionString))
{
var foundEmail = string.Empty;
foreach (string emailStr in lst)
{
email = LastCharFromEmailAddress(emailStr).Replace("\r\n", string.Empty);
var intensifyDb = new IntensifyEntities();
var constultantUser = intensifyDb.ConsultantUsers.FirstOrDefault(x => x.Email == email);
// Delete the item
if (constultantUser != null)
{
intensifyDb.DeleteObject(constultantUser);// Save changes
intensifyDb.SaveChanges();
}
if (!intensifyDb.RemovedEmails.Any(x => x.RemovedEmails == email))
{
RemovedEmail consultant = new RemovedEmail
{
RemovedEmails = email
};
intensifyDb.AddToRemovedEmails(consultant);
intensifyDb.SaveChanges();
}
}
connection.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
此异常通常意味着您的db字段长度不足
我建议在调试器中查看这段代码,并检查字符串的实际长度是多少.
编辑:
我认为它的额外空间将sting复制到编辑器并检查并尝试使用.Trim()
email = email.Trim();
Run Code Online (Sandbox Code Playgroud)
如果修剪不起作用,它可能是一些看不见的Unicode字符
尝试在代码中添加:
var debugCheck = string.Join("",
email.Select(c=> String.Format("{0:X2}", Convert.ToInt32(c))))
Run Code Online (Sandbox Code Playgroud)
并将debugCheck的值发送给我,以便我可以检查它.
(这会将电子邮件值转换为十六进制字符串,这将有助于识别可能看起来像空格的额外字符但不会
更新:
所以你实际上有这个字符串(十六进制)707261736868616E7468406F6265726F6E69742E636F6D200B200B200B200B200B200B200B200B2??00B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B20??0B200B200B200B200B200B200B200B200B200B200B200B200B200B200B200B
200B表示Unicode字符'ZERO WIDTH SPACE'(U + 200B)你可以通过使用它删除它
.Replace("\u200B", "");
Run Code Online (Sandbox Code Playgroud)
删除所有unicode空格字符的更通用代码:
Regex.Replace(email, @"^[\s,]+|[\s,]+$", "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |