如何获取反射的aspx页面的编译版本

时间:2009-08-04 14:11:40

标签: asp.net reflection

鉴于我的网站上已经预编译的aspx页面的路径,如何从我的网站上的第二页获取编译版本(dll或其他)的路径,以便我可以通过反射检查其属性,方法和类?

或者从aspx页面生成方法/属性列表的其他方法吗?

4 个答案:

答案 0 :(得分:1)

您要查找的内容应该位于服务器的bin文件夹中。由于安全问题,您无法通过浏览器访问bin文件夹。因此,您需要使用ftp客户端或本地服务器打开服务器的ISS文件夹。然后,您可以在下载后使用反射器。

答案 1 :(得分:0)

我相信他们都应该在同一个集会中。你可以测试一下。

只需将以下代码段放在aspx页面的顶部:

<%=this.GetType().Assembly.Location %>

这将为您提供dll的目录。或者,您可以这样做:

<%=typeof(MyWebsite.TargetPageType).Assembly.Location %>

替换您要检查的页面类型。

答案 2 :(得分:0)

你可能会用这个:

System.Web.Compilation.BuildManager.GetCompiledType(Me.Request.Url.AbsolutePath)

答案 3 :(得分:0)

ASP.Net按需编译页面,这基本上意味着您需要使用BuildManager来确保它们在那里。基本上它检查它是否存在并且是最新的 - 如果不是它将创建组件。

var pg = System.Web.Compilation.BuildManager.GetCompiledType([relative path]);

如果您已经在页面上,那当然很简单:

var pg = this;

此处的其他信息

使用Assembly.Location从该路径动态加载程序集的所有内容都不正确,甚至可能会破坏您的应用程序。如果这样做,则存在加载旧程序集的风险 - 当ASP.NET工作者发现它应重新编译时,加载新程序集可能会因名称冲突而失败。你也在看旧代码。简而言之:不要这样做。