无法在控制器中获取错误 500 详细信息

Cannot get error 500 details in controller

我有一个随机引发异常(内部服务器错误)的简单 Rest Web 服务。 当我在控制台程序中以 50.000 次迭代循环强调此 Web api 时,我注意到了这一点。 我在这个客户端得到了什么:


{StatusCode:500,ReasonPhrase:'Internal Server Error',版本:1.1,


我想要的是获得这个 Error 500 的详细信息。 但是我无法在我的控制器中捕捉到它,代码没有被捕捉到。 控制器代码:

[HttpPost]
    [Route("{IdLog}/message")]
    public string CreateLogMsg(long IdLog, [FromBody] TlogLineDTO oLogLine)
    {
        long lTmp = 0;

        try
        {
            if (ModelState.IsValid)
            {
                string sTmp = _oExploitBll.InsertNewLogLine(oLogLine).ToString();

                if (!long.TryParse(sTmp, out lTmp))
                {
                    // Create a new file     
                    Random rnd = new Random();

                    using (System.IO.StreamWriter sw = System.IO.File.AppendText(@"E:\Temp200707\REF_" + rnd.Next().ToString() + ".txt"))
                    {
                        sw.WriteLine(sTmp);
                    }
                }
                return sTmp;
            }
            else
            {
                // Create a new file where to put the error message   
                Random rnd = new Random();

                using (System.IO.StreamWriter sw = System.IO.File.AppendText(@"E:\Temp200707\REF_" + rnd.Next().ToString() + ".txt"))
                {
                    sw.WriteLine("Ko");
                }

                return "Ko";
            }
        }
        catch (Exception ex)
        {
            string sMsgErr = ex.Message + "-" + ex.StackTrace;

            // Create a new file     
            Random rnd = new Random();

            using (System.IO.StreamWriter sw = System.IO.File.AppendText(@"E:\Temp200707\REF_" + rnd.Next().ToString() + ".txt"))
            {
                sw.WriteLine(sMsgErr);
            }
            return "0";
        }          
    }

我怎样才能让它进入捕获状态? 有人有想法吗?

非常感谢。

埃里克

如果如您所说,错误发生是因为服务器压力过大,则收到错误的请求永远不会到达控制器。实际上,服务器甚至无法将它们排入队列。 Sso 你无法处理它们,除非你添加一个从客户端接收请求的边车服务器,将它们转发到你的服务器然后

  • 如果响应正常将响应转发给客户端
  • 否则处理错误

在实际情况下,您使用负载均衡器在更多服务器之间分配请求负载

事实上,我已经更正了代码并为 http 请求添加了 2 次重试循环,它似乎有效:当 http 请求失败时,我重试一次(或我想要的重试次数)并且一般第二次重试http请求成功。 但是我还是不知道为什么有时候http请求会失败