我正在寻找确认的观察到的但未记录在案的IIS 7.5行为,因为我无法在MS网站上找到记录的行为。我需要一种方法来仅通过使用new Exception()抛出的自定义异常,将customErrors设置为Off,并在web.config中设置以下内容
<httpErrors existingResponse="Auto">
<clear/>
</httpErrors>
我根本没有在代码中使用TrySkipIisCustomErrors,但这似乎可以按需工作。系统错误的行为仍然类似于“ customErrors ='On'”,但是我的自定义异常将转到我的Ajax调用,在该调用中我对其进行解析以显示消息。 这是我的测试网络方法:
public string Update(Models.CaseData appData, Models.CaseData appDataCache)
{
//Test 1. trigger system error
var t = 0;
var x = 1;
var p = x / t;
var sendEmail = IsModified(appData, appDataCache);
//Test 2. Throw user defined error
if (appDataCache != null && !sendEmail)
{
throw new Exception("Your changes do not require sending email. Are you sure you want to save these changes?".ToJsonError(type: "confirm"));
}
}
如果我保留测试1,则会从IIS收到通用消息“处理请求时出现问题”,但是如果我将其注释掉,则来自测试2的自定义异常将转到Ajax错误处理程序。
这正是我需要IIS表现的方式,但是我不确定这种IIS行为是设计使然,还是我遇到了某种对我有利的IIS错误,有些犹豫将其交付生产。
请提供其他解决方案的建议或帮助,以仅通过自定义异常。
谢谢。