Asp.net 瞥见MVC3 DLL为';遗忘';作为应用程序池回收的一部分
我们试图在我们的环境中启动并运行,但遇到了一个奇怪的问题 我们已经安装了skille.Core、skille.AspNet和skille.Mvc3.dll,当我们配置web.config以启用skille时,一切都正常工作,直到应用程序池回收。一旦AppPool回收,就好像站点“忘记”了scape.Mvc3.dll,Mvc3选项卡(执行、模型、元数据)消失了 以下是(我们)复制的步骤:Asp.net 瞥见MVC3 DLL为';遗忘';作为应用程序池回收的一部分,asp.net,asp.net-mvc,assemblies,application-pool,glimpse,Asp.net,Asp.net Mvc,Assemblies,Application Pool,Glimpse,我们试图在我们的环境中启动并运行,但遇到了一个奇怪的问题 我们已经安装了skille.Core、skille.AspNet和skille.Mvc3.dll,当我们配置web.config以启用skille时,一切都正常工作,直到应用程序池回收。一旦AppPool回收,就好像站点“忘记”了scape.Mvc3.dll,Mvc3选项卡(执行、模型、元数据)消失了 以下是(我们)复制的步骤: 修改web.config以包含配置 所有选项卡都将显示,包括执行、元数据和模型绑定 执行应用程序池回收 MVC
- AspNet(1.3.1)
- 配置-scape.AspNet.Tab.Configuration
- 环境-scape.AspNet.Tab.Environment
- 请求-scape.AspNet.Tab.Request
- 路由-skille.AspNet.Tab.Routes
- 服务器-scape.AspNet.Tab.Server
- 会话-scape.AspNet.Tab.Session
- 一瞥(1.5.0)
- 时间线-scape.Core.Tab.Timeline
- Trace-scape.Core.Tab.Trace
- 1.Mvc3(1.3.2)
- 执行-scape.Mvc.Tab.Execution
- 元数据-scape.Mvc.Tab.Metadata
- 模型绑定-scape.Mvc.Tab.ModelBinding
- 视图-scape.Mvc.Tab.Views
- AspNet(1.3.1)
- 配置-scape.AspNet.Tab.Configuration
- 环境-scape.AspNet.Tab.Environment
- 请求-scape.AspNet.Tab.Request
- 路由-skille.AspNet.Tab.Routes
- 服务器-scape.AspNet.Tab.Server
- 会话-scape.AspNet.Tab.Session
- 一瞥(1.5.0)
- 时间线-scape.Core.Tab.Timeline
- Trace-scape.Core.Tab.Trace
非常感谢您的任何想法/建议。原因似乎是ASP.Net以及它第一次从您的应用程序目录加载程序集并在循环使用后的方式。在第一次启动时,程序集从应用程序的bin目录加载,在回收(甚至IIS重新启动)后,它从临时ASP.NET文件目录加载程序集。并根据情况加载更多或更少的程序集 通过在
Global.asax中的Application\u Start
方法中添加以下行,您可以自己看到这一点
protected void Application_Start()
{
Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
bool glimpseMvc3AssemblyLoaded = loadedAssemblies.Any(a => a.FullName.Contains("Glimpse.Mvc3"));
File.AppendAllText(
"C:\\temp\\output.txt",
string.Format(
"{0}{1} assemblies loaded and Glimpse.Mvc3 is{2} one of them",
Environment.NewLine,
loadedAssemblies.Length,
glimpseMvc3AssemblyLoaded ? string.Empty : " not"));
}
如果运行该选项,则会在output.txt文件中看到以下条目(尽管数字可能不同)
首次启动时:
60个已加载和预览的程序集。Mvc3是其中之一
回收后
30个已加载和预览的程序集。Mvc3不是其中之一
30个已加载和预览的程序集。Mvc3不是其中之一
删除临时ASP.NET文件目录中的相应目录后
70个已加载和预览的程序集。Mvc3是其中之一
这与一瞥有何关联。好的,Spile调用AppDomain.Current.GetAssemblys()
,之后它将查找实现ITab
的类型,但是如果没有返回Spile.Mvc3
程序集,则不会发现其中定义的选项卡,因此不会显示
这能解决你的问题吗?恐怕没有,但我认为最好还是继续讨论这个问题,事实上我已经在那里找到了一个,但我不确定它是否是你的
更新
即将发布的一瞥版本中会有一个补丁,但同时也有一个解决方案/解决方案,如关于一瞥问题中所述
只需将以下语句添加到Global.asaxApplication\u Start
方法
BuildManager.GetReferencedAssemblys()
原因似乎是ASP.Net以及它第一次从应用程序目录加载程序集的方式以及在循环使用之后。在第一次启动时,程序集从应用程序的bin目录加载,在回收(甚至IIS重新启动)后,它从临时ASP.NET文件目录加载程序集。并根据情况加载更多或更少的程序集 通过在
Global.asax中的Application\u Start
方法中添加以下行,您可以自己看到这一点
protected void Application_Start()
{
Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
bool glimpseMvc3AssemblyLoaded = loadedAssemblies.Any(a => a.FullName.Contains("Glimpse.Mvc3"));
File.AppendAllText(
"C:\\temp\\output.txt",
string.Format(
"{0}{1} assemblies loaded and Glimpse.Mvc3 is{2} one of them",
Environment.NewLine,
loadedAssemblies.Length,
glimpseMvc3AssemblyLoaded ? string.Empty : " not"));
}
如果运行该选项,则会在output.txt文件中看到以下条目(尽管数字可能不同)
首次启动时:
60个已加载和预览的程序集。Mvc3是其中之一
回收后
30个已加载和预览的程序集。Mvc3不是其中之一
30个已加载和预览的程序集。Mvc3不是其中之一
删除临时ASP.NET文件目录中的相应目录后
70个已加载和预览的程序集。Mvc3是其中之一
这与一瞥有何关联。好的,Spile调用AppDomain.Current.GetAssemblys()
,之后它将查找实现ITab
的类型,但是如果没有返回Spile.Mvc3
程序集,则不会发现其中定义的选项卡,因此不会显示
这能解决你的问题吗?恐怕没有,但我认为最好还是继续讨论这个问题,事实上我已经在那里找到了一个,但我不确定它是否是你的
更新
在即将发布的《一瞥》中会有一个补丁,但是在mea中