如何使用C#/ASP.Net将错误传递回responseText
我们有一个C#AJAX服务器,它可以处理数据库请求。我们希望在异常情况下返回400/403/500状态代码,以便了解客户端发生了什么。然而,我们得到的只是响应体中的“错误请求” 例如,如果ADO.Net驱动程序返回以下消息: 传递给LEFT或SUBSTRING函数的长度参数无效。 无法将值NULL插入表的列'--column--'中 “--DATABASE.SCHEMA.TABLE--”;列不允许空值。插入 失败。声明已终止 然后,我们的AJAX服务器只返回以下文本: 错误的请求 我已经查看了Chrome中的完整响应标题,其中甚至没有类似于此错误消息的内容。这是我们用来发回错误的代码:如何使用C#/ASP.Net将错误传递回responseText,c#,asp.net,ajax,exception,C#,Asp.net,Ajax,Exception,我们有一个C#AJAX服务器,它可以处理数据库请求。我们希望在异常情况下返回400/403/500状态代码,以便了解客户端发生了什么。然而,我们得到的只是响应体中的“错误请求” 例如,如果ADO.Net驱动程序返回以下消息: 传递给LEFT或SUBSTRING函数的长度参数无效。 无法将值NULL插入表的列'--column--'中 “--DATABASE.SCHEMA.TABLE--”;列不允许空值。插入 失败。声明已终止 然后,我们的AJAX服务器只返回以下文本: 错误的请求 我已经查看了C
catch (Exception ex)
{
//Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.SC_BAD_REQUEST;
Response.Write(ex.Message);
Response.Flush();
}
在与此服务器等效的Java/JSP中,我们使用以下代码获得正确的行为:
} catch (Exception e) {
response.sendError(response.SC_BAD_REQUEST, e.getClass() + " : " + e.getMessage());
}
有一些事情可能会出错,但我敢打赌,您运行的是IIS7,它的默认值会导致它重写错误。请尝试配置设置上的属性和
existingResponse
属性。服务器正在将错误消息封装到错误请求中,以防止安全详细信息到达客户端。您可以通过将customErrors设置为off来修改此行为,例如:
<system.web>
<customErrors mode="Off">
</customErrors>
</system.web>
如果ASP.NET之外的内容引发错误,而不是显式设置的错误,则会影响选择哪个选项,不是吗?我只是在web.config中更改了此选项,但没有任何效果。将此选项添加到web.config中成功-非常感谢<代码>