Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#/ASP.Net将错误传递回responseText_C#_Asp.net_Ajax_Exception - Fatal编程技术网

如何使用C#/ASP.Net将错误传递回responseText

如何使用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

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

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

传递给LEFT或SUBSTRING函数的长度参数无效。 无法将值NULL插入表的列'--column--'中 “--DATABASE.SCHEMA.TABLE--”;列不允许空值。插入 失败。声明已终止

然后,我们的AJAX服务器只返回以下文本:

错误的请求

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

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中成功-非常感谢<代码>