获取Web应用程序程序集名称,而不管当前正在执行的程

Pab*_*ote 15 .net c# asp.net asp.net-mvc asp.net-mvc-3

是否可以从引用的程序集中获取ASP.NET Web应用程序的程序集名称?

Assembly.GetEntryAssembly在桌面和控制台应用程序中运行良好,但它似乎在Web应用程序中始终为null,而GetExecuting\GetCalling可能会返回我引用的程序集,而不是Web应用程序中的程序集.


很长的解释:

我编写了一个自定义设置提供程序,它不是从应用程序配置文件中读取配置,而是从集中配置服务获取设置.

自定义提供程序位于单独的程序集中,因此可供不同的应用程序使用.

应用程序名称属性需要与应用程序组件的名称被重写.

使用提供程序的方法是使用.net自定义属性,因此我无法向其发送任何参数.

由于没有Assembly.Get*汇编方法似乎有效,我唯一能想到的是需要一个appSetting与web应用程序的应用程序名称,但我真的不高兴.感谢任何帮助,谢谢!

Vas*_*aev 18

尝试

BuildManager.GetGlobalAsaxType().BaseType.Assembly
Run Code Online (Sandbox Code Playgroud)

  • 我得到"在应用程序的预启动初始化阶段不能调用此方法." 尝试在ASP.NET MVC中使用此方法时出错. (3认同)

SLa*_*aks 9

您可以使用

HttpContext.Current.ApplicationInstance.GetType().Assembly
Run Code Online (Sandbox Code Playgroud)

  • 如果您的项目中不包含Global.asax文件,则此方法无效. (3认同)
  • 它不起作用:/ ... ApplicationInstance 在 Application_Start() 方法中为 null(其中初始化设置提供程序),并且在控制器内部返回一个奇怪的运行时生成的程序集(例如 App_global.asax.hiqe17zm,Version=0.0.0.0,文化=中立,PublicKeyToken=null) (2认同)
  • @Pabote:尝试获取其`BaseType`的汇编(应在用户代码中定义) (2认同)