在我的web.config文件中,我具有customErrors,并且默认重定向到我的控制器ErrorController,如下所示:
`# try 1
var selectStatement = "SELECT * FROM FILEPROCESS_USER where EMAIL like
?";
# try 2
var selectStatement = "SELECT * FROM FILEPROCESS_USER where EMAIL like" + EMAIL+;
# try 3
var bindVars = {
userid : EMAIL,
resultSet: {dir: oracledb.BIND_OUT, type: oracledb.STRING, maxSize:
32767},
error: {dir: oracledb.BIND_OUT, type: oracledb.STRING, maxSize: 4000} } ;
connection.execute( "SELECT * FROM FILEPROCESS_USER where EMAIL=
:userid", bindVars {*
handleDatabaseOperation( req, res, function (request, response,
connection)
{
var EMAIL = 'ABC@GMAIL.COM';
connection.execute( selectStatement, [email],
outFormat: oracledb.OBJECT
},function (err, result) {
if (err) {
console.log('Error in execution of select statement'+err.message);
response.writeHead(500, {'Content-Type': 'application/json'});
response.end(JSON.stringify({ status: 500, detailed_message:
err.message })
);
}
else {
response.writeHead (200, {'Content-Type': 'application/json'});
response.end(JSON.stringify(result.rows));
}
`
我现在尝试在ErrorController的Index方法中执行的操作是获取错误代码(404、405等),我尝试了以下操作:
<customErrors mode="On" defaultRedirect="/Error/">
</customErrors>
但是它总是返回200,因为它重定向到状态码为200的页面。...当我转到一个不存在的页面时,我仍然得到200的代码而不是404。我只想拥有一页,获取错误代码,而不要包含多个错误页面。这可能吗?
答案 0 :(得分:1)
删除defaultRedirect
并使用global.asax.cs
输入这样的代码。
[ValidateInput(false)]
protected void Application_Error()
{
//prevent the errors coming back!
this.Context.ClearError();
//redirect
this.Context.Response.Redirect($"~/Home/Error");
}
错误代码可能在this.Context
中的某个地方,请使用调试并尝试找到它。
FYI this.Context.AllErrors
仅具有所有错误,因此可以向您显示出了什么问题。