【问题标题】:Accessing ASP.NET Application Start Event without Application's original source code在没有应用程序原始源代码的情况下访问 ASP.NET 应用程序启动事件
【发布时间】:2014-09-15 14:57:30
【问题描述】:

我的任务是在一个由第 3 方开发的门户网站内部进行开发,并且我没有 Global.asax.cs 的代码隐藏文件。

我需要能够在应用程序启动事件中放置代码……例如,为 MVC 和 WebApi 映射路由是我现在需要做的最关键的事情。但是由于第 3 方没有提供背后的代码,有没有其他方法可以让我挂钩到此应用程序的 Application Start 事件?

或者这种缺乏访问权限的目的是作为一种“功能”来阻止客户端开发人员在应用程序级事件中运行代码?

【问题讨论】:

  • 您可以反编译现有的Global 类并使用添加的代码重新编译它。我认为这里更重要的问题是,一旦您开始修补此第 3 方工具不受支持的功能,那么您可能会使该第 3 方提供的任何支持无效。

标签: asp.net asp.net-mvc-4 asp.net-web-api


【解决方案1】:

在全局 asax 文件中,一个简单地引用应用程序的类。

你可以用派生自这个类的类替换这个类名(如果可能的话)

或尝试从您的事件处理程序中自己调用此类中的事件处理程序...

【讨论】:

  • 我认为为了让我从他们的类派生,我需要提供 Application_Start 作为覆盖,以便该方法的基类版本仍然会被调用。但是,他们的 Application_Start 没有标记为虚拟或“覆盖”,因此我必须在我的 Application_Start 上使用“新”。这会阻止他们的代码执行。
  • 我刚刚注意到您的第二个建议。我应该能够继承,在事件上使用新关键字,并在事件中执行 base.Application_Start(sender, e)。
猜你喜欢
  • 2020-10-05
  • 2012-08-16
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2015-01-28
  • 2019-02-19
  • 2017-09-06
相关资源
最近更新 更多