【发布时间】:2011-06-27 18:21:08
【问题描述】:
我正在尝试在我的 Asp.Net MVC 应用程序中使用 MvcMiniProfiler。我安装了最新的 NuGet 包,并将 wiki 页面中的所有代码添加到 Application_BeginRequest()、Application_AuthenticateRequest() 和我的视图中。
加载页面时,所有迷你分析器的 javascript 文件都被包含并从服务器正确下载,但是当它尝试获取 Chrome 显示的结果时:
GET http://localhost:59269/mini-profiler-results?id=59924d7f-98ba-40fe-9c4a-6a163f7c9b08&popup=1 404 (Not Found)
我认为这是因为没有使用 MVC 设置路由以允许 /mini-profiler-results 但是我找不到这样做的方法。查看 Google 代码页,他们的示例应用程序的Global.asax.cs 文件经历了几次更改,一次使用MvcMiniProfiler.MiniProfiler.RegisterRoutes(),第二次使用MvcMiniProfiler.MiniProfiler.Init(),第三种样式没有任何作用。前面提到的两个功能不存在,所以我假设它们已经被淘汰了。
此时我不确定如何修复此错误并在我的应用程序中使用分析器。有什么想法吗?
我的 Global.Asax.cs 文件如下所示:
public class Global : System.Web.HttpApplication
{
protected void Application_BeginRequest()
{
MvcMiniProfiler.MiniProfiler.Start();
}
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
// Only show profiling to admins
if (!Roles.IsUserInRole(Constants.AdminRole))
MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
}
protected void Application_Start(object sender, EventArgs e)
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapRoute(
"Default",
// Route name
"{controller}/{action}/{id}",
// URL with parameters
new { controller = "Home", action = "Index", id = "" }
// Parameter defaults
);
}
}
【问题讨论】:
-
现在看起来这一切都发生在静态构造函数中......看起来......
-
顺便说一句,为了避免开销,你应该避免调用 Start all;我们基于 cookie 执行此操作,然后我们稍后在管道中进行验证(当用户可用时)。
-
哦,维基页面让我觉得我上面的做法是通常/公认的做法。我应该改为在 Application_AuthenticateRequest() 方法中调用“Start”吗?
-
嗯.... 状态再现 ;p 看着
-
哇哦,很高兴不是我做错了什么疯狂的事情:)
标签: c# asp.net-mvc mvc-mini-profiler