C# 从Web应用调用时,System.Reflection.Assembly.GetEntryAssembly()为null

C# 从Web应用调用时,System.Reflection.Assembly.GetEntryAssembly()为null,c#,system.reflection,C#,System.reflection,我正在VisualStudio2010中使用目标框架-3.5开发一个web应用程序 我正在使用一个dll(由另一个团队开发),其中我得到以下代码的错误: string strName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name; 我检查并发现System.Reflection.Assembly.GetEntryAssembly()返回null,并对此进行了搜索,在msdn上发现,当从任何非托管代码调用Ge

我正在VisualStudio2010中使用目标框架-3.5开发一个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

是管理的ASP.Net主机进程。答案是否定的。因此,web应用程序中的
GetEntryAssembly
结果为空

解决方案完全取决于第三方程序集尝试执行的操作以及它调用
GetEntryAssembly
的原因


您可以创建一个可执行文件来承载程序集,并在单独的进程中启动该程序集,然后调用将返回可执行文件assembley。但是,这可能不是最好的做法,这取决于您希望实现的总体目标。

我是否应该创建另一个类库项目,并从该项目调用此程序集?@Amit24,您需要启动一个新流程,条目assembley就是启动新流程的程序集。您需要创建一个可执行程序集,并从那里调用第三方dll。然后使用
Process.Start
启动可执行主机,正如我在回答中所说,这可能是最好的解决方案,也可能不是最好的解决方案。好了,现在我明白了,我需要一个可执行程序集,因为流程应该从那里开始。非常感谢你的帮助。