using Elmah; using FluentScheduler; using Sevomin.Models; using Sevomin.Models.Helpers; using Sevomin.WebFrontend.Controllers; using System; using System.Threading.Tasks; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Sevomin.WebFrontend { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); #if !DEBUG TaskManager.Initialize(new SevominRegistry()); #endif } void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e) { if ((e.Exception.GetBaseException() is HttpException && ((HttpException)(e.Exception.GetBaseException())).GetHttpCode() == 404 && e.Context is HttpContext) || ((HttpContext)e.Context).Request.Url.ToString().ToLower().Contains(@"favicon.ico".ToLower())) { e.Dismiss(); } } static void TaskManager_UnobservedTaskException(Task sender, UnhandledExceptionEventArgs e) { var error = new Elmah.Error(e.ExceptionObject as Exception); Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(error); } protected void Application_EndRequest() { if (Context.Response.StatusCode == 404) { Response.Clear(); var rd = new RouteData(); rd.Values["controller"] = "Base"; rd.Values["action"] = "Error404"; IController c = new BaseController(); c.Execute(new RequestContext(new HttpContextWrapper(Context), rd)); } } } }