什么[ASP.net] MVC在我的控制器之前做什么?

Stu*_*nar 6 .net c# asp.net-mvc performance mvc-mini-profiler

我的MVC控制器出现了一些奇怪的性能问题,或者更确切地说是之前的问题?

根据Mini Profiler输出,在到达我的控制器之前有120ms的开销.

有谁知道为什么会这样?这是在已Compilation debug=false设置的服务器(非本地)上,因此不是在release模式下运行的问题.

在它之后的一切,我可以调整/修改,但在此之前?我迷路了..

思考?

在此输入图像描述

更新

经过一番表现的工具,我碰到在此处输入链接的描述在这里输入链接的描述导致在下面:

最昂贵的堆栈------------------------------------ System.Web.HttpApplication + CallHandlerExecutionStep.System.Web .HttpApplication.IExecutionStep.Execute System.Web.HttpApplication.ExecuteStep System.Web.HttpApplication + PipelineStepManager.ResumeSteps System.Web.HttpApplication.BeginProcessRequestNotification System.Web.HttpRuntime.ProcessRequestNotificationPrivate System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting .PipelineRuntime.ProcessRequestNotification System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting.PipelineRuntime.ProcessRequestNotification ===> Cost(1716011)

Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp Microsoft.Practices.ObjectBuilder2 .BuilderContext.NewBuildUp Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp Microsoft .Practices.Unity.UnityContainer.DoBuildUp Microsoft.Practices.Unity.UnityContainer.DoBuildUp System.Web.Mvc.DefaultControllerFactory + DefaultControllerActivator.Create System.Web.Mvc.DefaultControllerFactory.CreateController System.Web.Mvc.MvcHandler.ProcessRequestInit System.Web. Mvc.MvcHandler + < > c__DisplayClass6.b__2 System.Web.Mvc.SecurityUtil + <> c__DisplayClassb`1.b__a System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust System.Web.HttpApplication + CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute System.Web.HttpApplication. ExecuteStep System.Web.HttpApplication + PipelineStepManager.ResumeSteps System.Web.HttpApplication.BeginProcessRequestNotification System.Web.HttpRuntime.ProcessRequestNotificationPrivate System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting.PipelineRuntime.ProcessRequestNotification System.Web.Hosting.UnsafeIISMethods. MgdIndicateCompletion System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting.PipelineRuntime.ProcessRequestNotification ===> Cost(936006)

Microsoft.Win32.Win32Native.CoCreateGuid StackExchange.Profiling.Timing..ctor StackExchange.Profiling.MVCHelpers.ProfilingViewEngine.Find System.Web.Mvc.ViewEngineCollection + <> c__DisplayClassc.b__a System.Web.Mvc.ViewEngineCollection.Find System.Web.Mvc .ViewEngineCollection.Find System.Web.Mvc.ViewResult.FindView System.Web.Mvc.ViewResultBase.ExecuteResult System.Web.Mvc.ControllerActionInvoker + <> c__DisplayClass1c.b__19 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter System.Web.Mvc.ControllerActionInvoker .InvokeActionResultFilter System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters System.Web.Mvc.ControllerActionInvoker.InvokeAction System.Web.Mvc.Controller.ExecuteCore System.Web.Mvc.ControllerBase.Execute System.Web.Mvc.MvcHandler + <> c__DisplayClass6 + <> c__DisplayClassb.b__5 System.Web.Mvc.Async.AsyncResultWrapper + <> c__DisplayClass1.b__0 System.Web.Mvc.MvcHandler + <> c__DisplayClasse.b__d System.Web.HttpApplication + CallHandlerExecutionStep.System.Web.HttpA pplication.IExecutionStep.Execute System.Web.HttpApplication.ExecuteStep System.Web.HttpApplication + PipelineStepManager.ResumeSteps System.Web.HttpApplication.BeginProcessRequestNotification System.Web.HttpRuntime.ProcessRequestNotificationPrivate System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting. PipelineRuntime.ProcessRequestNotification System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper System.Web.Hosting.PipelineRuntime.ProcessRequestNotification ===> Cost(780005)

团结会导致一些问题吗?

che*_*enZ 0

我对我的英语感到抱歉


1.全局或某些HttpModule中有很多Application_BeginRequest(和AuthenticateRequest)
2.过滤器
3.mvc框架,控制器工厂,动作调用器等
4.第一次运行时,将il编译为原生需要花费很多

我认为您可以使用秒表来检查操作中的代码花费了多少时间
,以便您可以找出需要花费多少时间的点

120ms 不是运行操作之前花费的时间,我认为这是操作完成的时间

顺便说一下,120ms 还不错

更新

public ActionResult Index()
{
    var profiler = MiniProfiler.Current;
    using (profiler.Step("action"))
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述
这张图片是上面的代码运行结果,所以你可以看到
action是一个child,仅花费1.9
和http://......成本302,它包括控制器,action


所以你应该检查图片中操作代码内部或操作代码外部的大部分时间成本,它花费 300+,因为它是第一次运行,第二次运行仅花费 4
第一次运行一定很慢