从Web App调用时,System.Reflection.Assembly.GetEntryAssembly()为null

时间:2013-02-14 10:15:39

标签: c# system.reflection

我正在使用目标框架 - 3.5开发Visual Studio 2010中的Web应用程序 我正在使用一个dll(由另一个团队开发),其中我收到以下代码的错误:

    string strName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;

我检查并发现System.Reflection.Assembly.GetEntryAssembly()返回null并且还在msdn上找到了它,并且当从任何非托管代码调用时,GetEntryAssembly()可能返回null。

当我从我的Web应用程序调用时,它返回null,当我从任何Windows应用程序调用时,它工作正常,即。它获取条目程序集名称(执行已启动的程序集)。为什么它在Web应用程序中返回null?我无法理解。 我还尝试将我的Web项目的输出类型从Visual Studio中的项目属性更改为类库,但是输出类型的下拉列表被禁用,我无法更改项目的输出类型。 如果此问题存在任何解决方案,请帮助我。

提前致谢

Amit Shahani

1 个答案:

答案 0 :(得分:3)

是否管理了ASP.Net主机进程。答案是不。因此,您的网络应用中GetEntryAssembly的结果为空。

解决方案全部取决于您的第三方程序集正在尝试执行的操作以及调用GetEntryAssembly的原因。

您可以创建一个可执行文件来托管程序集并在单独的进程中启动它,然后该调用将返回您的可执行程序的程序集。但是,这可能不是最好的行动方案,这取决于你想要实现的目标。