鉴于我的网站上已经预编译的aspx页面的路径,如何从我的网站上的第二页获取编译版本(dll或其他)的路径,以便我可以通过反射检查其属性,方法和类?
或者从aspx页面生成方法/属性列表的其他方法吗?
答案 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工作者发现它应重新编译时,加载新程序集可能会因名称冲突而失败。你也在看旧代码。简而言之:不要这样做。