0

common code added in Global.asax

protected void Application_Error(object sender, EventArgs e)
        {
            var exception = Server.GetLastError();

            // This should be the path in filesystem relative to where your controller and action
            var requestControllerName = Convert.ToString(HttpContext.Current.Request.RequestContext?.RouteData?.Values["controller"]);
            var requestActionName = Convert.ToString(HttpContext.Current.Request.RequestContext?.RouteData?.Values["action"]);

            var errorArea = "Errors";
            var errorController = "Error";
            var errorAction = "Index";

            if ((ControllerActionForPopupError.ErrorPopupController.Contains(requestControllerName)) & (ControllerActionForPopupError.ErrorPopupAction.Contains(requestActionName)))
            {
                errorAction = "ShowErrorPopUp";
            }

            var pathToViewFile = $"~/Areas/{errorArea}/Views/{errorController}/{errorAction}.cshtml";

            var controller = new ErrorController();
            var routeData = new RouteData { DataTokens = { { "area", errorArea } }, Values = { { "controller", errorController }, { "action", errorAction } } };
            var controllerContext = new ControllerContext(new HttpContextWrapper(HttpContext.Current), routeData, controller);
            controller.ControllerContext = controllerContext;

            var sw = new StringWriter();
            var razorView = new RazorView(controller.ControllerContext, pathToViewFile, "", false, null);
            var model = new ViewDataDictionary(new HandleErrorInfo(exception, requestControllerName, requestActionName));
            var viewContext = new ViewContext(controller.ControllerContext, razorView, model, new TempDataDictionary(), sw);

            razorView.Render(viewContext, sw);

            //error log 
            var randomNo = new Random(Guid.NewGuid().GetHashCode());
            var logNo = randomNo.Next(1, 10000000);

            razorView.Render(viewContext, sw);

            string errorLogMsg = string.Empty;
            if (exception.InnerException != null)
            {
                errorLogMsg = string.Format(ErrorLog.ErrorLogMsg, logNo, Session[SessionVariableNames.UserName], requestControllerName, requestActionName, exception.InnerException);
            }
            else
            {
                errorLogMsg = string.Format(ErrorLog.ErrorLogMsg, logNo, Session[SessionVariableNames.UserName], requestControllerName, requestActionName, exception);
            }

            if (Response.StatusCode == (int)HamaspikData.Utility.Enums.ErrorStatusCode.Success)
            {
                if (exception.Message.Contains(ErrorLog.SessionTimeOutErr) || exception.Message.Contains(ErrorLog.ModuleListNotReturnErr))
                {
                    Response.StatusCode = (int)HamaspikData.Utility.Enums.ErrorStatusCode.UnassignedError;
                }
                else
                {

                    Response.StatusCode = new HttpException(null, exception).GetHttpCode();
                }
            }

            if (exception.Message.Contains(ErrorLog.PageNotFoundErr))
            {
                viewContext.ViewBag.ErrorMessage = string.Format(ErrorLog.PageNotFoundMsg, logNo);
            }
            else
            {
                if (exception.Message.Contains(ErrorLog.SessionTimeOutErr))
                {
                    viewContext.ViewBag.ErrorMessage = ErrorLog.TimeoutMessage;
                }
                else if (exception.Message.Contains(ErrorLog.ModuleListNotReturnErr))
                {
                    viewContext.ViewBag.ErrorMessage = ErrorLog.ModuleListNotReturnMessage;
                }
                else
                {
                    viewContext.ViewBag.ErrorMessage = string.Format(ErrorLog.Message, logNo);
                }

            }

            viewContext.ViewBag.ErrorStatusCode = Response.StatusCode.ToString();

            Logger.globalException(errorLogMsg);
            razorView.Render(viewContext, sw);
            HttpContext.Current.Response.Write(sw);
            Server.ClearError();
            HttpContext.Current.Response.End();
        }

web config setting,

<customErrors mode="Off">

its working fine in normal web hosting or IIS publishing but not working in Azure site any one have idea how can fix it.

Azure Published: enter image description here

IIS Published: enter image description here

Prabhat Sinha
  • 1,500
  • 20
  • 32
  • I suggest you check Azure App Services Diagnostic Logs to isolate this issue there are sub-status codes listed in the diagnostic logs for your web app. Check out the web server logs for this detail. Refer this link: https://learn.microsoft.com/en-us/azure/app-service/web-sites-enable-diagnostic-log – JennyDai Jul 06 '22 at 07:41
  • Response.StatusCode = 200; always coming I'm changing its that problem ? – Prabhat Sinha Jul 12 '22 at 14:26

0 Answers0