子类化全局和重写Application_Start

时间:2011-05-17 21:19:18

标签: asp.net global-asax web-application-project

我有几个缺少源代码的Web应用程序。该项目被编译为dll并托管在IIS上。

我有几个问题要做。

  • 重新创建的最佳方式是什么? 来自dll文件的项目??

  • 我们正计划改变 数据库服务器和数据库 连接字符串在。中指定 Global.asax(I mean the public class Global : HttpApplication)。是 有一种方法可以将其子类化 全局并覆盖连接 字符串?如果是,我怎么能做到 IIS引用新的dll

谢谢大家的任何建议!!

2 个答案:

答案 0 :(得分:1)

首先,使用Reflector / ILSpy / dotPeek等反编译工具将IL代码从DLL转换为更高级别的语言,如C#。但是,工具无法获取注释,局部变量名称和项目结构。您需要手动将代码组织到文件和项目结构中。从aspx文件中,您必须找出代码隐藏类,然后将类的源链接到正确的命名代码隐藏文件 - 例如,如果default.aspx说它继承MyApp.Default然后创建文件default.aspx.xs并将该类的源代码放入其中。

对于第二部分,您可以创建一个派生自Global的新类并修改Global.asax以使用该类 - 您需要将包含新类的程序集放在bin文件夹中并覆盖inherits子句在asax文件中指向新类的类型名称。无论如何,您需要检查当前Global类的代码(使用上面看到的工具),看看是否可以通过子类来覆盖连接字符串。

答案 1 :(得分:0)

  1. 将dll反向工程为代码的最佳工具可能是.NET Reflector。不幸的是,最新版本不再免费,但值得花钱。

  2. 如果您已经可以对源代码进行反向工程,我不确定这是否仍然适用。但是,我建议将项目外部的连接字符串移动到web.config中作为最佳实践。这样,您可以在不更改任何代码的情况下进行更改。