我有一个 asp.net MVC Web 应用程序,它使用 jQuery 进行许多 Ajax 调用。ajax 调用一个控制器来捕获存储过程中抛出的各种验证异常。当在过程中发现验证异常时,我使用以下语法
RAISERROR ('VALIDATION ERROR: xyx is required.', 16, 1)
然后,我的 MVC 控制器捕获 SQL 异常,我在其中进行一些日志记录,然后重新抛出一个新异常(e.Message)。
catch (SqlException se)
{
// logging happens
// exception get rethrown for ajax error handling
throw new Exception(se.Message);
}
从那里,我的 ajax 错误处理程序接管。
error: function(jqXHR, textStatus, errorThrown) {}
在我的本地 Visual Studio Server 中,ajax 错误处理程序检索所需的以下 jqXHR.responseText:
<html>
<head>
<title>VALIDATION ERROR: xyx is required.</title>
</head>
....
从那里我解析标题并显示验证错误。效果很好。
但是,当我将代码部署到托管的 IIS 服务器时,我在 jqXHR.responseText 中得到一个通用的 500 响应:
<html>
<head>
<title>Runtime Error</title>
</head> ....
出于某种原因,我的共享产品服务器以不同的方式处理异常。你知道我怎样才能让两种环境都产生第一个行为吗?
我尝试在我的 web.config 中添加以下几行,但没有运气
<httpErrors errorMode="Custom" existingResponse="PassThrough">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="502" subStatusCode="-1" />
<remove statusCode="501" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
</httpErrors>
提前致谢