作为应用程序池回收的一部分,MVC3 DLL 被“遗忘”

2024-03-20

我们正在努力获得Glimpse http://getglimpse.com/在我们的环境中启动并运行,但遇到一个奇怪的问题。

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

以下是(我们)重现的步骤:

  1. 修改 web.config 以包含 Glimpse 配置
  2. 将显示所有选项卡,包括执行、元数据和模型绑定
  3. 执行应用程序池回收
  4. MVC3 Glimpse 选项卡将不再显示(但其他选项卡会显示)

在 AppPool 回收之前,Glimpse.axd 显示以下已注册选项卡:

  • Glimpse.AspNet (1.3.1)
    • 配置 - Glimpse.AspNet.Tab.Configuration
    • 环境 - Glimpse.AspNet.Tab.Environment
    • 请求-Glimpse.AspNet.Tab.Request
    • 路由 - Glimpse.AspNet.Tab.Routes
    • 服务器 - Glimpse.AspNet.Tab.Server
    • 会话 - Glimpse.AspNet.Tab.Session
  • Glimpse (1.5.0)
    • 时间轴 - Glimpse.Core.Tab.Timeline
    • 跟踪 - Glimpse.Core.Tab.Trace
  • Glimpse.Mvc3 (1.3.2)
    • 执行 - Glimpse.Mvc.Tab.Execution
    • 元数据 - Glimpse.Mvc.Tab.Metadata
    • 模型绑定 - Glimpse.Mvc.Tab.ModelBinding
    • 视图 - Glimpse.Mvc.Tab.Views

AppPool 回收后,Glimpse.axd 显示以下已注册选项卡:

  • Glimpse.AspNet (1.3.1)
    • 配置 - Glimpse.AspNet.Tab.Configuration
    • 环境 - Glimpse.AspNet.Tab.Environment
    • 请求-Glimpse.AspNet.Tab.Request
    • 路由 - Glimpse.AspNet.Tab.Routes
    • 服务器 - Glimpse.AspNet.Tab.Server
    • 会话 - Glimpse.AspNet.Tab.Session
  • Glimpse (1.5.0)
    • 时间轴 - Glimpse.Core.Tab.Timeline
    • 跟踪 - Glimpse.Core.Tab.Trace

就好像该网站“忘记”了 Glimpse.Mvc3.dll 作为 AppPool 回收的一部分。

任何想法/建议都非常感激。


原因似乎是 ASP.Net 及其首次和回收后从应用程序目录加载程序集的方式。首次启动时,程序集从应用程序的 bin 目录加载,在回收(甚至 IIS 重新启动)后,它从应用程序的 bin 目录加载程序集。临时 ASP.NET 文件目录。并根据情况加载或多或少的程序集。

您可以通过将以下行添加到您的Application_Start方法在你的Global.asax

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 assemblies loaded and Glimpse.Mvc3 is one of them

回收后

30 assemblies loaded and Glimpse.Mvc3 is not one of them

30 assemblies loaded and Glimpse.Mvc3 is not one of them

删除里面对应的目录后临时 ASP.NET 文件目录

70 assemblies loaded and Glimpse.Mvc3 is one of them

这与一瞥有何关联。 Well Glimpse 拨打电话AppDomain.Current.GetAssemblies()之后它将寻找实现的类型ITab,但如果Glimpse.Mvc3未返回程序集,则不会发现其中定义的选项卡,因此不会显示。

这能解决您的问题吗?恐怕不是,但我认为最好继续讨论一瞥问题跟踪器 https://github.com/glimpse/glimpse/issues,事实上我已经找到了类似问题 https://github.com/Glimpse/Glimpse/issues/462在那儿,但我不确定它是不是你的。

Update即将发布的 Glimpse 版本中将会有一个修复程序,但同时有一个解决方案/解决方法,如中所述评论之一 https://github.com/Glimpse/Glimpse/issues/462#issuecomment-21168158关于一瞥问题。

只需将以下语句添加到全局.asax Application_Start method

BuildManager.GetReferencedAssemblies()

and 你可以走了 https://github.com/Glimpse/Glimpse/issues/462#issuecomment-21170223

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作为应用程序池回收的一部分,MVC3 DLL 被“遗忘” 的相关文章

  • 如何在 asp.net 网站中使用 aspnetdb 数据库

    我使用 asp net 3 5 创建了一个网站 现在我使用 Membership API 和 aspnetdb 数据库为其添加了会员支持 我已经在本地机器上完成了所有测试 现在 在将该站点上传到服务器时 需要考虑与 aspnetdb 有关的
  • 如何在 Asp.Net 页面上的一处处理所有错误/消息?

    我在这里寻找一些指导 在我的网站上 我将内容放入 Web 用户控件中 例如 我将有一个新闻项控件 一个文章控件 一个联系表单控件 这些将出现在我网站上的各个位置 我正在寻找一种方法 让这些控件将消息传递到它们所在的页面 我不想将它们紧密结合
  • PostAsync 方法的 HttpClient 错误

    使用 HttpClient 对第 3 方 API 进行 PostAsync 调用时 当我执行 client PostAsync 时 我正好看到此错误 知道是什么原因造成的吗 Code public class JobController A
  • 本地主机上的 .net HTTP_X_FORWARDED_FOR NULL

    抱歉 如果其他地方已经回答了这个问题 我找不到它 如果没有 我会尝试查找访问过该站点的机器的原始 IP 根据我的基本理解 变量HTTP X FORWARDED FOR无论代理和其他过滤器如何 都会显示用户的 IP 如果这是真的 我正在尝试对
  • 带有 HttpContext 的 ASP.NET MVC 单元测试控制器

    我正在尝试为我的一个控制器编写一个单元测试 以验证视图是否正确返回 但该控制器有一个访问 HttpContext Current Session 的基本控制器 每次我创建控制器的新实例时 都会调用 basecontroller 构造函数 并
  • ASP.NET MVC 和 Expression XAML - 如何集成?

    一些背景 ASP net MVC 主要是构建和开发 ASP NET 应用程序方式的范式转变 从 代码隐藏 类型的心态转变为更像标准 MVC Ruby on Rails 的心态 我赞扬它作为一种简化工具来简化单元测试和代码分离 尽管 html
  • 如何从内容页检索母版页中的控件

    当我最近问一个关于如何从内容页检索母版页中的控件 许多人建议我使用内容页面中的这段代码 Label lbl this Master Page FindControl uxLabel as Label Note any server cont
  • 阻止未确认电子邮件的用户使用 Identity 2 登录 ASP.Net MVC

    在 Microsoft Identity 2 中 用户可以确认我从以下位置下载了 Identity 2 示例项目的电子邮件地址here https www nuget org packages Microsoft AspNet Identi
  • Visual Studio 智能感知搞砸了

    所以我是 MVC4 和 C 的新手 我已经设计这个网站大约两周了 智能感知没有任何问题 两天来 Visual studio 告诉我 Viewbag 和其他 命令不是我的项目的一部分 我可能错过了一些东西 或者它告诉我 Viewbag 在当前
  • 如何从 Web API 应用程序返回 PDF

    我有一个在服务器上运行的 Web API 项目 它应该从两种不同类型的源返回 PDF 实际的可移植文档文件 PDF 和存储在数据库中的 base64 字符串 我遇到的问题是将文档发送回客户端 MVC 应用程序 剩下的部分是关于所发生的一切以
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 如何强制 Visual Studio 2008 生成 Designer.cs,例如不管怎样.aspx.designer.cs

    我在使用 Visual Studio 2005 使用网站技术生成的 Asp Net V2 0 中有一些 Web 表单 想要将它们导入到设置为 v3 5 Asp Net MVC 的 Visual Studio 2008 我在其中使用项目技术
  • 锚标记 href 中的 eval

    我想要实现的目标是在锚标记的 href 中使用 Eval 作为参数 锚点嵌套在转发器内 为什么我不能使用后面的代码来实现这一点 我尝试了一些事情但没有运气 a href http MyWebsite ActiveUsers ID Inser
  • 从备用位置获取实体框架连接字符串?

    如何从自定义配置文件而不是 web config 检索 Entity Framework 4 连接字符串 编辑 删除默认构造函数生成的代码并在分部类中重新创建它以使用拉入的连接字符串是否合理 我真的很想避免使用包括连接字符串在内的重载方法更
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 缺少添加控制器/视图的上下文菜单

    我已将 ASP NET MVC 4 集成到现有的 asp net 网站中 两者都工作正常 但我没有看到任何菜单 快捷方式来在 Visual Studio IDE 中创建控制器 视图 这些仅适用于 ASP NET MVC 模板吗 这些仅适用于
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P

随机推荐