C#-获取customErrors页面的状态代码

时间:2019-07-12 13:01:31

标签: c# asp.net

在我的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。我只想拥有一页,获取错误代码,而不要包含多个错误页面。这可能吗?

1 个答案:

答案 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仅具有所有错误,因此可以向您显示出了什么问题。