Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 发生任何错误时,将调用两次应用程序_Error()(发生未经处理的异常)_Asp.net Mvc 3_Exception Handling - Fatal编程技术网

Asp.net mvc 3 发生任何错误时,将调用两次应用程序_Error()(发生未经处理的异常)

Asp.net mvc 3 发生任何错误时,将调用两次应用程序_Error()(发生未经处理的异常),asp.net-mvc-3,exception-handling,Asp.net Mvc 3,Exception Handling,每当发生错误时,我的C.net mvc应用程序_错误将被调用两次 应用程序错误代码为: protected void Application_Error(object sender, EventArgs e) { var httpContext = ((MvcApplication)sender).Context; //var currentController = " ";

每当发生错误时,我的C.net mvc应用程序_错误将被调用两次

应用程序错误代码为:

        protected void Application_Error(object sender, EventArgs e)
        {
                var httpContext = ((MvcApplication)sender).Context;
                //var currentController = " ";
                //var currentAction = " ";
                string currentController;
                string currentAction;
                var currentRouteData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));
                currentController = "";
                currentAction = "";
                if (currentRouteData != null)
                {
                    if (currentRouteData.Values["controller"] != null && !String.IsNullOrEmpty(currentRouteData.Values["controller"].ToString()))
                    {
                        currentController = currentRouteData.Values["controller"].ToString();
                    }

                    if (currentRouteData.Values["action"] != null && !String.IsNullOrEmpty(currentRouteData.Values["action"].ToString()))
                    {
                        currentAction = currentRouteData.Values["action"].ToString();
                    }
                }

                var ex = Server.GetLastError();
                var controller = new ErrorController();
                var routeData = new RouteData();
                var action = "Error";

                if (ex is HttpException)
                {
                    var httpEx = ex as HttpException;

                    switch (httpEx.GetHttpCode())
                    {
                        case 400:
                            action = "BadRequest";
                            break;

                        case 401:
                            action = "Unauthorized";
                            break;

                        case 403:
                            action = "Forbidden";
                            break;

                        case 404:
                            action = "NotFound";
                            break;

                        case 408:
                            action = "RequestTimeout";
                            break;

                        case 500:
                            action = "InternalServerError";
                            break;

                        case 502:
                            action = "BadGateway";
                            break;

                        case 503:
                            action = "ServiceUnavailable";
                            break;

                        case 504:
                            action = "GatewayTimeout";
                            break;
                    }
                }

                httpContext.ClearError();
                httpContext.Response.Clear();
                httpContext.Response.StatusCode = ex is HttpException ? ((HttpException)ex).GetHttpCode() : 500;
                httpContext.Response.TrySkipIisCustomErrors = true;

               routeData.Values["controller"] = "Error";
              routeData.Values["action"] = action;

                controller.ViewData.Model = new HandleErrorInfo(ex, currentController, currentAction);

                ((IController)controller).Execute(new RequestContext(new HttpContextWrapper(httpContext), routeData));
        }

我猜您的浏览器正在向错误页面上的/favicon.ico文件发送一个自动请求,您忘记在应用程序中包含该图标,404再次触发应用程序错误事件。通过在Application_Error方法中放置断点并分析以下值,可以查看有关请求的更多详细信息:

httpContext.Request.Url.AbsoluteUri

我放了我的2美分,你会看到类似的东西http://localhost:1234/favicon.ico.

我猜您的浏览器正在向错误页面上的/favicon.ico文件发送一个自动请求,您忘记在应用程序中包含该图标,404再次触发应用程序错误事件。通过在Application_Error方法中放置断点并分析以下值,可以查看有关请求的更多详细信息:

httpContext.Request.Url.AbsoluteUri
我放了我的2美分,你会看到类似的东西http://localhost:1234/favicon.ico.