C# 为什么会出现错误;指定的字符串不是电子邮件地址所需的格式。”;从SQL Server?
这对我来说是非常神秘的,因为我没有表示这个参数指的是一个电子邮件地址(某种形式)XXX@XXX.XXX). 没有属性、元数据等。我在变量命名中使用了单词C# 为什么会出现错误;指定的字符串不是电子邮件地址所需的格式。”;从SQL Server?,c#,asp.net,sql-server,asp.net-mvc,tsql,C#,Asp.net,Sql Server,Asp.net Mvc,Tsql,这对我来说是非常神秘的,因为我没有表示这个参数指的是一个电子邮件地址(某种形式)XXX@XXX.XXX). 没有属性、元数据等。我在变量命名中使用了单词email,但除此之外,我不明白SQL Server是如何返回此错误的 HTML: <fieldset class="form-group"> <label for="email-address">Email address</label> <input type="text" class
email
,但除此之外,我不明白SQL Server是如何返回此错误的
HTML:
<fieldset class="form-group">
<label for="email-address">Email address</label>
<input type="text" class="form-control" name="eaddr" id="email-address" value="lkassjdkljasdklj@gmail.com">
</fieldset>
$.ajax({
...,
data: JSON.stringify({
...
Email: $('input[name="eaddr"').val(),
...
}),
....
});
C#:
public Guid? AddPartner ( PartnerInit P )
{
// returns the id of the partner that was added
// on error, returns null
Guid? pid = null;
// Insert partner to database
using (SqlCommand cmd = new SqlCommand("AddPartner", this._Conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@first_name", P.FirstName);
cmd.Parameters.AddWithValue("@last_name", P.LastName);
cmd.Parameters.AddWithValue("@org_name", P.OrgName);
cmd.Parameters.AddWithValue("@email", P.Email);
cmd.Parameters.AddWithValue("@region_id", P.RegionId);
SqlParameter output = new SqlParameter("@new_guid", SqlDbType.UniqueIdentifier) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(output);
this._Conn.Open();
cmd.ExecuteNonQuery();
pid = (Guid?)output.Value;
this._Conn.Close();
}
CREATE PROCEDURE AddPartner (@first_name NVARCHAR(50),
@last_name NVARCHAR(50),
@org_name NVARCHAR(50),
@email NVARCHAR(254),
@region_id INT,
@new_guid UNIQUEIDENTIFIER OUTPUT)
AS
BEGIN
DECLARE @T TABLE ( OutputGuid UNIQUEIDENTIFIER )
INSERT INTO Partners (first_name, last_name, org_name, email, region_id)
OUTPUT INSERTED.id INTO @T
VALUES (@first_name, @last_name, @org_name, @email, @region_id)
SELECT @new_guid = OutputGUID FROM @T
END
GO
T-SQL:
public Guid? AddPartner ( PartnerInit P )
{
// returns the id of the partner that was added
// on error, returns null
Guid? pid = null;
// Insert partner to database
using (SqlCommand cmd = new SqlCommand("AddPartner", this._Conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@first_name", P.FirstName);
cmd.Parameters.AddWithValue("@last_name", P.LastName);
cmd.Parameters.AddWithValue("@org_name", P.OrgName);
cmd.Parameters.AddWithValue("@email", P.Email);
cmd.Parameters.AddWithValue("@region_id", P.RegionId);
SqlParameter output = new SqlParameter("@new_guid", SqlDbType.UniqueIdentifier) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(output);
this._Conn.Open();
cmd.ExecuteNonQuery();
pid = (Guid?)output.Value;
this._Conn.Close();
}
CREATE PROCEDURE AddPartner (@first_name NVARCHAR(50),
@last_name NVARCHAR(50),
@org_name NVARCHAR(50),
@email NVARCHAR(254),
@region_id INT,
@new_guid UNIQUEIDENTIFIER OUTPUT)
AS
BEGIN
DECLARE @T TABLE ( OutputGuid UNIQUEIDENTIFIER )
INSERT INTO Partners (first_name, last_name, org_name, email, region_id)
OUTPUT INSERTED.id INTO @T
VALUES (@first_name, @last_name, @org_name, @email, @region_id)
SELECT @new_guid = OutputGUID FROM @T
END
GO
这不是一个错误。。。我只是好奇,当我在email字段中输入类似于“blahblahblah”
的内容时,它是如何返回错误的
指定的字符串不是电子邮件所需的格式
地址
无论何时定义邮件地址无效的
maildaddress
或MailMessage
对象,都会发生此错误消息
您的表列似乎没有触发器或任何类型的约束 可能您的表上有一个insert触发器,用于对电子邮件列执行验证。请检查表的定义,特别是触发器和检查约束(列级/表级)是否还可以提供完整的堆栈跟踪?此错误消息可能由.NET邮件组件引发,这是一个有趣的巧合。我真正想问的是,你能确认你是如何确定错误来自SQL Server的吗?毕竟,你是一个自称“不合格”的web开发人员;-)(顺便说一句,名字不错!)您是否对这封电子邮件做了其他事情,比如在插入记录时向它发送电子邮件?这正是尝试将邮件的MailAddress设置为无法识别为电子邮件的字符串时通常会收到的错误。您是否确认这不是web端的验证?例如,直接在SSMS中运行存储过程时是否会收到此消息?