c# - 如何使用 C#/ASP.Net 在 responseText 中传回错误

标签 c# asp.net ajax exception

我们有一个处理数据库请求的 C# AJAX 服务器,我们希望在异常时返回 400/403/500 状态代码,以便我们可以了解客户端发生了什么。然而,我们得到的只是响应正文中的“Bad Request”。

例如,如果 ADO.Net 驱动程序返回此消息:

Invalid length parameter passed to the LEFT or SUBSTRING function. Cannot insert the value NULL into column '--COLUMN--', table '--DATABASE.SCHEMA.TABLE--'; column does not allow nulls. INSERT fails. The statement has been terminated.

然后我们的 AJAX 服务器简单地返回这个文本:

Bad Request

我已经查看了 Chrome 中的完整响应 header ,其中没有任何类似错误消息的内容。这是我们用来发回错误的代码:

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 上运行,并且它的默认值导致它重写错误。试试 TrySkipIisCustomErrors httpErrors 上的属性和 existingResponse 属性配置设置。

关于c# - 如何使用 C#/ASP.Net 在 responseText 中传回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433792/

相关文章:

c# - 无法加载文件或程序集 'System, Version=4.0.0.0, Culture=neutral' 或其依赖项之一

c# - 创建静态资源的多个副本

c# - 在 C# 中存储全局变量(如路径)的位置?

asp.net - 使用@@identity检索PK

javascript - 通过ajax和jquery从另一个php文件上传后显示图像

c# - 为什么我可以从线程中的表单访问控件而不会出现跨线程异常?

c# - 在 Web 应用程序中使用 WPF 在内存中创建 3D 视觉对象。适用于 Cassini,不适用于 IIS

asp.net - 当用户未通过身份验证时,如何处理 ajax 请求?

javascript - 使用ajax将php数组传递给javascript

ajax - 求助,我在 Firebug 控制台中丢失了 JSON 选项卡