我有几个缺少源代码的 Web 应用程序。该项目被编译为 dll 并托管在 IIS 上。
我有几个问题要问。
从 dll 文件重新创建项目的最佳方法是什么?
我们计划更改数据库服务器,数据库连接字符串在 Global.asax (
I mean the public class Global : HttpApplication
) 中指定。有没有办法可以将这个 Global 子类化并覆盖连接字符串?如果是,我怎样才能让 IIS 引用新的 dll
谢谢大家的任何建议!!
我有几个缺少源代码的 Web 应用程序。该项目被编译为 dll 并托管在 IIS 上。
我有几个问题要问。
从 dll 文件重新创建项目的最佳方法是什么?
我们计划更改数据库服务器,数据库连接字符串在 Global.asax ( I mean the public
class Global : HttpApplication
) 中指定。有没有办法可以将这个 Global 子类化并覆盖连接字符串?如果是,我怎样才能让 IIS 引用新的 dll
谢谢大家的任何建议!!
第一部分,使用Reflector / ILSpy / dotPeek等反编译工具将 IL 代码从 DLL 转换为 C# 等高级语言。但是,工具无法取回注释、局部变量名称和项目结构。您需要手动将代码组织成文件和项目结构。从 aspx 文件中,您必须找出代码隐藏类,然后将类的源链接到正确命名的代码隐藏文件中 - 例如,如果 default.aspx 说它继承自然后MyApp.Default
创建文件 default.aspx .xs 并将类的源代码放入其中。
对于第二部分,您可以创建一个派生自Global
Global.asax 的新类并修改以使用该类 - 您需要将包含新类的程序集放在 bin 文件夹中,并inherits
在 asax 文件中覆盖子句以指向新类的类型名称。无论如何,您都需要检查当前 Global 类的代码(使用上面提到的工具),看看您是否可以通过子类化来覆盖连接字符串。
将 dll 逆向工程为代码的最佳工具可能是.NET Reflector。不幸的是,最新版本不再免费,但物有所值。
如果您已经可以对源代码进行逆向工程,我不确定这是否仍然适用。但是,作为最佳实践,我建议您将项目之外的连接字符串移到 web.config 中。这样您就可以在将来进行更改而无需更改任何代码。