Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 瞥见MVC3 DLL为';遗忘';作为应用程序池回收的一部分_Asp.net_Asp.net Mvc_Assemblies_Application Pool_Glimpse - Fatal编程技术网

Asp.net 瞥见MVC3 DLL为';遗忘';作为应用程序池回收的一部分

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

我们试图在我们的环境中启动并运行,但遇到了一个奇怪的问题

我们已经安装了skille.Core、skille.AspNet和skille.Mvc3.dll,当我们配置web.config以启用skille时,一切都正常工作,直到应用程序池回收。一旦AppPool回收,就好像站点“忘记”了scape.Mvc3.dll,Mvc3选项卡(执行、模型、元数据)消失了

以下是(我们)复制的步骤:

  • 修改web.config以包含配置
  • 所有选项卡都将显示,包括执行、元数据和模型绑定
  • 执行应用程序池回收
  • MVC3预览选项卡将不再显示(但其他选项卡将显示)
  • 在AppPool回收之前,scape.axd显示以下已注册的选项卡:

    • 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
    和AppPool回收后,scape.axd显示以下已注册选项卡:

    • 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
    这就好像站点“忘记”了作为AppPool回收的一部分的scape.Mvc3.dll


    非常感谢您的任何想法/建议。

    原因似乎是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.asax
    Application\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中