using Neo.LegitimateLicences.Api.Helpers; using System.Data.Entity; using System.Linq; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; using System; using System.Configuration; using Sentry.EntityFramework; using Sentry; using System; using System.Web; using Newtonsoft.Json; namespace Neo.LegitimateLicences.Api { public class MvcApplication : System.Web.HttpApplication { private IDisposable _sentry; protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.RegisterConfig); ValueProviderFactories.Factories.Remove(ValueProviderFactories.Factories.OfType().FirstOrDefault()); ValueProviderFactories.Factories.Add(new JsonDotNetValueProviderFactory()); GlobalConfiguration.Configuration.MessageHandlers.Add(new AuthorizationHeaderHandler()); ////DbConfiguration.SetConfiguration(new EFConfig()); //GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //only enable this for troubleshooting purposes GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Re‌​ferenceLoopHandling = ReferenceLoopHandling.Ignore; if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["SentryDsn"])) { SentryDatabaseLogging.UseBreadcrumbs(); _sentry = SentrySdk.Init(o => { o.Dsn = new Dsn(ConfigurationManager.AppSettings["SentryDsn"]); o.AddEntityFramework(); }); } } #region Application_Error protected void Application_Error() { if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["SentryDsn"])) { var exception = Server.GetLastError(); SentrySdk.WithScope(scope => { SentrySdk.CaptureException(exception); }); } } #endregion } }