如何解决获取.asp文件的.NET程序集版本
|| 我想制作一个“属性样式Web表单”,以显示各种.NET应用程序的应用程序版本。 如果我知道网址,例如/someapp/default.aspx是否可以通过反射来执行该页面并找出程序集版本? 找到正在执行的程序集版本非常容易,但是如果不修改其他应用程序,这可能吗? 属性页和另一个应用程序都在同一服务器上和同一应用程序池中运行。 更新:我很幸运var url = \"~/SomeApp/default.aspx\";
var appType = System.Web.Compilation.BuildManager.GetCompiledType(url);
但是,每次导航appType来查找程序集文件版本都不相同。
解决方法
无需修改Web应用程序以通过一些基于URL的检索来公开版本号(一个简单的页面
GET
是简单,显而易见的页面),您将需要找到一种方法来确定Web应用程序的DLL的位置来自URL。
如果可以通过某些约定(例如/ appX /始终位于D:\\ Sites \\ appX \\ bin \\ appX.dll)或某些配置(您可以手动输入每个URL的位置)来了解DLL \的位置,基本的DLL在数据库中),则可以使用以下代码检索该DLL的程序集版本:
Assembly assembly = Assembly.LoadFrom(\"MyAssembly.dll\");
Version ver = assembly.GetName().Version;
代码取自这个问题。
编辑:
我四处看看,有一些API可以检查IIS配置,因此,这当然是探索您是否尝试从URL到程序集位置的一种途径。例如,此问题有一个从应用程序/站点名称获取物理路径的示例。 Microsoft.Web.Administration是要探索的程序集。
, ASP.NET引擎仅向HTML客户端传输HTML,JavaScript等。除非在服务器端的开发人员添加了该程序集,否则在响应中传递的程序集几乎没有任何内容可以显示该应用程序正在运行的.net / asp.net版本。
就是说,您可以从http://uptime.netcraft.com/up/graph上的实用程序收集一些信息,该信息将为您提供一些服务器信息。不仅限于汇编版本,但与我相信的差不多。
, 您可以实现自定义HttpModule,将其放在要监视的每个应用程序的bin文件夹中,然后将此模块追加到web.config文件中注册。例如,在此模块中,您应该处理请求,检索所有必需的信息并将其放入响应cookie。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。