>'/'应用程序中的服务器错误。无法插入重复的键行 具有唯一索引'UK_Articles'的对象'dbo.Articles'。该声明 已被终止。描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.Data.SqlClient.SqlException:无法插入 具有唯一索引的对象'dbo.Articles'中的重复键行 'UK_Articles'。声明已经终止。
我可以代替内部服务器错误500显示UK错误吗?我可以抓住错误并以某种方式显示它吗?
编辑:
try
{
NHibernateSession.Save(entity);
}
catch (SqlException sex )
{
if (sex.Message.Contains("with unique index"))
throw new UniqueConstraintException("UK ERROR");
throw;
}
但NHibernateSession.Save(实体)始终使用GenericADOException,而不是SqlException。我想在nhibernate中捕获insert,这样我就可以全局收集它。
答案 0 :(得分:2)
我假设你使用的是Sql Server。
您需要try catch
块来处理SqlException
try
{
// run inser or update query here
myObj.InserRow();
}
catch (System.Data.SqlClient.SqlException ex)
{
if (ex.Number == 2601)
{
//"duplicate entry found!";
}
else
{
// some other kind of sql related exception
}
}
catch (Exception ex)
{
// any other exception
}
答案 1 :(得分:1)
您可以使用web.config显示手动错误
<customErrors mode="On" defaultRedirect="~/ErrorPage.aspx">
<error statusCode="500" redirect="~/500Error.aspx" />
</customErrors>