diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs
index 419f9cd873..e5dc8240a7 100644
--- a/src/Umbraco.Core/CoreBootManager.cs
+++ b/src/Umbraco.Core/CoreBootManager.cs
@@ -187,9 +187,6 @@ namespace Umbraco.Core
///
protected virtual void InitializeResolvers()
{
- //By default we'll initialize the Log profiler (in the web project, we'll override with the web profiler)
- ProfilerResolver.Current = new ProfilerResolver(new LogProfiler());
-
//by default we'll use the standard configuration based sync
ServerRegistrarResolver.Current = new ServerRegistrarResolver(
new ConfigServerRegistrar());
diff --git a/src/Umbraco.Core/Profiling/IProfiler.cs b/src/Umbraco.Core/Profiling/IProfiler.cs
index 6021fb8a4a..12e6e6714f 100644
--- a/src/Umbraco.Core/Profiling/IProfiler.cs
+++ b/src/Umbraco.Core/Profiling/IProfiler.cs
@@ -1,44 +1,44 @@
-using System;
+//using System;
-namespace Umbraco.Core.Profiling
-{
- ///
- /// Defines an object for use in the application to profile operations
- ///
- public interface IProfiler
- {
+//namespace Umbraco.Core.Profiling
+//{
+// ///
+// /// Defines an object for use in the application to profile operations
+// ///
+// public interface IProfiler
+// {
- ///
- /// Render the UI to display the profiler
- ///
- ///
- ///
- /// Generally used for HTML displays
- ///
- string Render();
+// ///
+// /// Render the UI to display the profiler
+// ///
+// ///
+// ///
+// /// Generally used for HTML displays
+// ///
+// string Render();
- ///
- /// Profile a step
- ///
- ///
- ///
- ///
- /// Use the 'using(' syntax
- ///
- IDisposable Step(string name);
+// ///
+// /// Profile a step
+// ///
+// ///
+// ///
+// ///
+// /// Use the 'using(' syntax
+// ///
+// IDisposable Step(string name);
- ///
- /// Start the profiler
- ///
- void Start();
+// ///
+// /// Start the profiler
+// ///
+// void Start();
- ///
- /// Start the profiler
- ///
- ///
- /// set discardResults to false when you want to abandon all profiling, this is useful for
- /// when someone is not authenticated or you want to clear the results based on some other mechanism.
- ///
- void Stop(bool discardResults = false);
- }
-}
\ No newline at end of file
+// ///
+// /// Start the profiler
+// ///
+// ///
+// /// set discardResults to false when you want to abandon all profiling, this is useful for
+// /// when someone is not authenticated or you want to clear the results based on some other mechanism.
+// ///
+// void Stop(bool discardResults = false);
+// }
+//}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Profiling/LogProfiler.cs b/src/Umbraco.Core/Profiling/LogProfiler.cs
index a074d9e409..22b35f4de5 100644
--- a/src/Umbraco.Core/Profiling/LogProfiler.cs
+++ b/src/Umbraco.Core/Profiling/LogProfiler.cs
@@ -1,35 +1,35 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Umbraco.Core.Logging;
+//using System;
+//using System.Collections.Generic;
+//using System.Linq;
+//using System.Text;
+//using Umbraco.Core.Logging;
-namespace Umbraco.Core.Profiling
-{
- ///
- /// A profiler that outputs its results to the LogHelper
- ///
- public class LogProfiler : IProfiler
- {
- public string Render()
- {
- return string.Empty;
- }
+//namespace Umbraco.Core.Profiling
+//{
+// ///
+// /// A profiler that outputs its results to the LogHelper
+// ///
+// public class LogProfiler : IProfiler
+// {
+// public string Render()
+// {
+// return string.Empty;
+// }
- public IDisposable Step(string name)
- {
- LogHelper.Debug(typeof(LogProfiler), "Starting - " + name);
- return DisposableTimer.Start(l => LogHelper.Info(typeof (LogProfiler), () => name + " (took " + l + "ms)"));
- }
+// public IDisposable Step(string name)
+// {
+// LogHelper.Debug(typeof(LogProfiler), "Starting - " + name);
+// return DisposableTimer.Start(l => LogHelper.Info(typeof (LogProfiler), () => name + " (took " + l + "ms)"));
+// }
- public void Start()
- {
- //the log will alwasy be started
- }
+// public void Start()
+// {
+// //the log will alwasy be started
+// }
- public void Stop(bool discardResults = false)
- {
- //we don't need to do anything here
- }
- }
-}
+// public void Stop(bool discardResults = false)
+// {
+// //we don't need to do anything here
+// }
+// }
+//}
diff --git a/src/Umbraco.Core/Profiling/ProfilerExtensions.cs b/src/Umbraco.Core/Profiling/MiniProfilerExtensions.cs
similarity index 70%
rename from src/Umbraco.Core/Profiling/ProfilerExtensions.cs
rename to src/Umbraco.Core/Profiling/MiniProfilerExtensions.cs
index b9718271b9..8eb8a2ba63 100644
--- a/src/Umbraco.Core/Profiling/ProfilerExtensions.cs
+++ b/src/Umbraco.Core/Profiling/MiniProfilerExtensions.cs
@@ -1,8 +1,9 @@
using System;
+using StackExchange.Profiling;
namespace Umbraco.Core.Profiling
{
- public static class ProfilerExtensions
+ public static class MiniProfilerExtensions
{
///
/// Writes out a step prefixed with the type
@@ -11,7 +12,7 @@ namespace Umbraco.Core.Profiling
///
///
///
- public static IDisposable Step(this IProfiler profiler, string name)
+ public static IDisposable Step(this MiniProfiler profiler, string name)
{
return profiler.Step(string.Format("[" + typeof (T).Name + "] " + name));
}
diff --git a/src/Umbraco.Core/Profiling/ProfilerResolver.cs b/src/Umbraco.Core/Profiling/ProfilerResolver.cs
index 250084c441..92009967f2 100644
--- a/src/Umbraco.Core/Profiling/ProfilerResolver.cs
+++ b/src/Umbraco.Core/Profiling/ProfilerResolver.cs
@@ -1,37 +1,37 @@
-using Umbraco.Core.ObjectResolution;
+//using Umbraco.Core.ObjectResolution;
-namespace Umbraco.Core.Profiling
-{
- ///
- /// A resolver exposing the current profiler
- ///
- public class ProfilerResolver : SingleObjectResolverBase
- {
- ///
- /// Constructor
- ///
- ///
- public ProfilerResolver(IProfiler profiler)
- : base(profiler)
- {
+//namespace Umbraco.Core.Profiling
+//{
+// ///
+// /// A resolver exposing the current profiler
+// ///
+// public class ProfilerResolver : SingleObjectResolverBase
+// {
+// ///
+// /// Constructor
+// ///
+// ///
+// public ProfilerResolver(IProfiler profiler)
+// : base(profiler)
+// {
- }
+// }
- ///
- /// Method allowing to change the profiler during startup
- ///
- ///
- internal void SetProfiler(IProfiler profiler)
- {
- Value = profiler;
- }
+// ///
+// /// Method allowing to change the profiler during startup
+// ///
+// ///
+// internal void SetProfiler(IProfiler profiler)
+// {
+// Value = profiler;
+// }
- ///
- /// Gets the current profiler
- ///
- public IProfiler Profiler
- {
- get { return Value; }
- }
- }
-}
\ No newline at end of file
+// ///
+// /// Gets the current profiler
+// ///
+// public IProfiler Profiler
+// {
+// get { return Value; }
+// }
+// }
+//}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Profiling/WebProfiler.cs b/src/Umbraco.Core/Profiling/WebProfiler.cs
index 99465102e7..1c1d40cd45 100644
--- a/src/Umbraco.Core/Profiling/WebProfiler.cs
+++ b/src/Umbraco.Core/Profiling/WebProfiler.cs
@@ -1,161 +1,161 @@
-using System;
-using System.Web;
-using StackExchange.Profiling;
-using Umbraco.Core.Configuration;
-using Umbraco.Core.Logging;
+//using System;
+//using System.Web;
+//using StackExchange.Profiling;
+//using Umbraco.Core.Configuration;
+//using Umbraco.Core.Logging;
-namespace Umbraco.Core.Profiling
-{
- ///
- /// A profiler used for web based activity based on the MiniProfiler framework
- ///
- public class WebProfiler : IProfiler
- {
+//namespace Umbraco.Core.Profiling
+//{
+// ///
+// /// A profiler used for web based activity based on the MiniProfiler framework
+// ///
+// public class WebProfiler : IProfiler
+// {
- ///
- /// Constructor
- ///
- ///
- /// Binds to application events to enable the MiniProfiler
- ///
- internal WebProfiler()
- {
- UmbracoApplicationBase.ApplicationInit += UmbracoApplicationApplicationInit;
- }
+// ///
+// /// Constructor
+// ///
+// ///
+// /// Binds to application events to enable the MiniProfiler
+// ///
+// internal WebProfiler()
+// {
+// UmbracoApplicationBase.ApplicationInit += UmbracoApplicationApplicationInit;
+// }
- ///
- /// Handle the Init event o fthe UmbracoApplication which allows us to subscribe to the HttpApplication events
- ///
- ///
- ///
- void UmbracoApplicationApplicationInit(object sender, EventArgs e)
- {
- var app = sender as HttpApplication;
- if (app == null) return;
+// ///
+// /// Handle the Init event o fthe UmbracoApplication which allows us to subscribe to the HttpApplication events
+// ///
+// ///
+// ///
+// void UmbracoApplicationApplicationInit(object sender, EventArgs e)
+// {
+// var app = sender as HttpApplication;
+// if (app == null) return;
- if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High)
- {
- //If we don't have a high enough trust level we cannot bind to the events
- LogHelper.Info("Cannot start the WebProfiler since the application is running in Medium trust");
- }
- else
- {
- app.BeginRequest += UmbracoApplicationBeginRequest;
- app.EndRequest += UmbracoApplicationEndRequest;
- }
- }
+// if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High)
+// {
+// //If we don't have a high enough trust level we cannot bind to the events
+// LogHelper.Info("Cannot start the WebProfiler since the application is running in Medium trust");
+// }
+// else
+// {
+// app.BeginRequest += UmbracoApplicationBeginRequest;
+// app.EndRequest += UmbracoApplicationEndRequest;
+// }
+// }
- ///
- /// Handle the begin request event
- ///
- ///
- ///
- void UmbracoApplicationEndRequest(object sender, EventArgs e)
- {
- if (GlobalSettings.DebugMode == false) return;
- var request = TryGetRequest(sender);
- if (request.Success == false) return;
- if (request.Result.Url.IsClientSideRequest()) return;
- if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
- {
- //stop the profiler
- Stop();
- }
- }
+// ///
+// /// Handle the begin request event
+// ///
+// ///
+// ///
+// void UmbracoApplicationEndRequest(object sender, EventArgs e)
+// {
+// if (GlobalSettings.DebugMode == false) return;
+// var request = TryGetRequest(sender);
+// if (request.Success == false) return;
+// if (request.Result.Url.IsClientSideRequest()) return;
+// if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
+// {
+// //stop the profiler
+// Stop();
+// }
+// }
- ///
- /// Handle the end request event
- ///
- ///
- ///
- void UmbracoApplicationBeginRequest(object sender, EventArgs e)
- {
- if (GlobalSettings.DebugMode == false) return;
- var request = TryGetRequest(sender);
- if (request.Success == false) return;
- if (request.Result.Url.IsClientSideRequest()) return;
- if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
- {
- //start the profiler
- Start();
- }
- }
+// ///
+// /// Handle the end request event
+// ///
+// ///
+// ///
+// void UmbracoApplicationBeginRequest(object sender, EventArgs e)
+// {
+// if (GlobalSettings.DebugMode == false) return;
+// var request = TryGetRequest(sender);
+// if (request.Success == false) return;
+// if (request.Result.Url.IsClientSideRequest()) return;
+// if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
+// {
+// //start the profiler
+// Start();
+// }
+// }
- ///
- /// Render the UI to display the profiler
- ///
- ///
- ///
- /// Generally used for HTML displays
- ///
- public string Render()
- {
- return MiniProfiler.RenderIncludes().ToString();
- }
+// ///
+// /// Render the UI to display the profiler
+// ///
+// ///
+// ///
+// /// Generally used for HTML displays
+// ///
+// public string Render()
+// {
+// return MiniProfiler.RenderIncludes().ToString();
+// }
- ///
- /// Profile a step
- ///
- ///
- ///
- ///
- /// Use the 'using(' syntax
- ///
- public IDisposable Step(string name)
- {
- if (GlobalSettings.DebugMode == false) return null;
+// ///
+// /// Profile a step
+// ///
+// ///
+// ///
+// ///
+// /// Use the 'using(' syntax
+// ///
+// public IDisposable Step(string name)
+// {
+// if (GlobalSettings.DebugMode == false) return null;
- return MiniProfiler.Current.Step(name);
- }
+// return MiniProfiler.Current.Step(name);
+// }
- ///
- /// Start the profiler
- ///
- public void Start()
- {
- if (GlobalSettings.DebugMode == false) return;
- //will not run in medium trust
- if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
+// ///
+// /// Start the profiler
+// ///
+// public void Start()
+// {
+// if (GlobalSettings.DebugMode == false) return;
+// //will not run in medium trust
+// if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
- MiniProfiler.Start();
- }
+// MiniProfiler.Start();
+// }
- ///
- /// Start the profiler
- ///
- ///
- /// set discardResults to false when you want to abandon all profiling, this is useful for
- /// when someone is not authenticated or you want to clear the results based on some other mechanism.
- ///
- public void Stop(bool discardResults = false)
- {
- if (GlobalSettings.DebugMode == false) return;
- //will not run in medium trust
- if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
+// ///
+// /// Start the profiler
+// ///
+// ///
+// /// set discardResults to false when you want to abandon all profiling, this is useful for
+// /// when someone is not authenticated or you want to clear the results based on some other mechanism.
+// ///
+// public void Stop(bool discardResults = false)
+// {
+// if (GlobalSettings.DebugMode == false) return;
+// //will not run in medium trust
+// if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
- MiniProfiler.Stop(discardResults);
- }
+// MiniProfiler.Stop(discardResults);
+// }
- ///
- /// Gets the request object from the app instance if it is available
- ///
- /// The application object
- ///
- private Attempt TryGetRequest(object sender)
- {
- var app = sender as HttpApplication;
- if (app == null) return Attempt.False;
+// ///
+// /// Gets the request object from the app instance if it is available
+// ///
+// /// The application object
+// ///
+// private Attempt TryGetRequest(object sender)
+// {
+// var app = sender as HttpApplication;
+// if (app == null) return Attempt.False;
- try
- {
- var req = app.Request;
- return new Attempt(true, new HttpRequestWrapper(req));
- }
- catch (HttpException ex)
- {
- return new Attempt(ex);
- }
- }
+// try
+// {
+// var req = app.Request;
+// return new Attempt(true, new HttpRequestWrapper(req));
+// }
+// catch (HttpException ex)
+// {
+// return new Attempt(ex);
+// }
+// }
- }
-}
\ No newline at end of file
+// }
+//}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index f013f5a6b7..3279f12251 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -523,7 +523,7 @@
-
+
diff --git a/src/Umbraco.Core/UmbracoApplicationBase.cs b/src/Umbraco.Core/UmbracoApplicationBase.cs
index eef1aa2215..8cedd54bc9 100644
--- a/src/Umbraco.Core/UmbracoApplicationBase.cs
+++ b/src/Umbraco.Core/UmbracoApplicationBase.cs
@@ -25,11 +25,6 @@ namespace Umbraco.Core
public static event EventHandler ApplicationStarting;
public static event EventHandler ApplicationStarted;
- ///
- /// Called when the HttpApplication.Init() is fired, allows developers to subscribe to the HttpApplication events
- ///
- public static event EventHandler ApplicationInit;
-
///
/// Boots up the Umbraco application
///
@@ -53,17 +48,49 @@ namespace Umbraco.Core
protected void Application_Start(object sender, EventArgs e)
{
StartApplication(sender, e);
+
+ if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High)
+ {
+ //If we don't have a high enough trust level we cannot bind to the events
+ LogHelper.Info("Cannot use the MiniProfiler since the application is running in Medium trust");
+ }
}
///
- /// Override init and raise the event
+ /// Initializes the mini profiler for the request
///
- public override void Init()
+ protected void Application_BeginRequest()
{
- base.Init();
- OnApplicationInit(this, new EventArgs());
+ if (GlobalSettings.DebugMode == false) return;
+ var request = TryGetRequest();
+ if (request.Success == false) return;
+ if (request.Result.Url.IsClientSideRequest()) return;
+ if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
+ if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
+ {
+ //start the profiler
+ MiniProfiler.Start();
+ }
}
+ ///
+ /// Closes the mini profiler for the request
+ ///
+ protected void Application_EndRequest()
+ {
+ if (GlobalSettings.DebugMode == false) return;
+ var request = TryGetRequest();
+ if (request.Success == false) return;
+ if (request.Result.Url.IsClientSideRequest()) return;
+ if (SystemUtilities.GetCurrentTrustLevel() < AspNetHostingPermissionLevel.High) return;
+ if (string.IsNullOrEmpty(request.Result["umbDebug"]) == false)
+ {
+ //stop the profiler
+ MiniProfiler.Stop();
+ }
+ }
+
+
///
/// Developers can override this method to modify objects on startup
///
@@ -85,18 +112,7 @@ namespace Umbraco.Core
if (ApplicationStarted != null)
ApplicationStarted(sender, e);
}
-
- ///
- /// Called to raise the ApplicationInit event
- ///
- ///
- ///
- private void OnApplicationInit(object sender, EventArgs e)
- {
- if (ApplicationInit != null)
- ApplicationInit(sender, e);
- }
-
+
///
/// A method that can be overridden to invoke code when the application has an error.
///
@@ -146,5 +162,22 @@ namespace Umbraco.Core
protected abstract IBootManager GetBootManager();
+ ///
+ /// Gets the request object from the app instance if it is available
+ ///
+ ///
+ private Attempt TryGetRequest()
+ {
+ try
+ {
+ var req = Request;
+ return new Attempt(true, new HttpRequestWrapper(req));
+ }
+ catch (HttpException ex)
+ {
+ return new Attempt(ex);
+ }
+ }
+
}
}
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index 43a2e3e60f..68a4476536 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -127,6 +127,10 @@
False
..\packages\Microsoft.AspNet.Mvc.FixedDisplayModes.1.0.1\lib\net40\Microsoft.Web.Mvc.FixedDisplayModes.dll
+
+ False
+ ..\packages\MiniProfiler.2.1.0\lib\net40\MiniProfiler.dll
+
False
..\packages\MySql.Data.6.6.4\lib\net40\MySql.Data.dll
diff --git a/src/Umbraco.Web.UI/packages.config b/src/Umbraco.Web.UI/packages.config
index 4e7a226db2..e1ede92f48 100644
--- a/src/Umbraco.Web.UI/packages.config
+++ b/src/Umbraco.Web.UI/packages.config
@@ -16,6 +16,7 @@
+
diff --git a/src/Umbraco.Web.UI/umbraco/umbraco.aspx b/src/Umbraco.Web.UI/umbraco/umbraco.aspx
index c153bae576..4a9490b049 100644
--- a/src/Umbraco.Web.UI/umbraco/umbraco.aspx
+++ b/src/Umbraco.Web.UI/umbraco/umbraco.aspx
@@ -4,6 +4,7 @@
<%@ Import Namespace="System.Web.Script.Serialization" %>
<%@ Register Src="controls/Tree/TreeControl.ascx" TagName="TreeControl" TagPrefix="umbraco" %>
+<%@ Import Namespace="StackExchange.Profiling" %>
<%@ Import Namespace="Umbraco.Core.Profiling" %>
<%@ Register TagPrefix="cc1" Namespace="umbraco.uicontrols" Assembly="controls" %>
<%@ Register TagPrefix="uc1" TagName="quickSearch" Src="Search/QuickSearch.ascx" %>
@@ -391,7 +392,7 @@
<%if(string.IsNullOrEmpty(Request["umbDebug"]) == false && umbraco.GlobalSettings.DebugMode)
{
- Response.Write(ProfilerResolver.Current.Profiler.Render());
+ Response.Write(MiniProfiler.RenderIncludes());
}%>