如何使用Reflection获取.aspx文件的位置

时间:2012-07-10 02:48:04

标签: c# asp.net .net visual-studio-2010

我正在搜索我的程序集(使用System.Reflection)来查找从特定类(System.Web.UI.Page)继承的类。

所有这些继承的类都在我的网页中有页面。

我如何阅读.aspx文件路径(相对于web root)?

我知道我可以从.pdb文件中读取此路径,但此文件在实时服务器中不存在。

修改    为了避免混淆,这里是我的代码示例。 doSomeProcess不是精确的过程。事实上,它接收类本身并进行分析。但是这个代码示例并不重要。

using System;
using System.IO;
using System.Reflection;

namespace ... {
    public class FixPaths: System.Web.UI.Page {

        void SearhcAssembly(){
            Assembly library = Assembly.GetExecutingAssembly();
            string FileName = Path.GetFileName(library.Location);
            foreach (Type type in library.GetTypes()) {
                if (FileName == type.Module.Name) {
                    if (type.BaseType != null && (type.BaseType.FullName == "System.Web.UI.Page")) {

                        string NameSpace = type.Namespace;
                        string ClassName = type.Name;

                        // -- This need to be changed --
                        string PageUrl = "/" + type.Namespace.ToLower().Replace(".", "/") + "/" + type.Name + ".aspx";
                        // -------------------------------------

                        doSomeProcess(NameSpace, ClassName, PageUrl);
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

鲍勃,不幸的是,这不是一个合适的解决方案。但是,就我们在评论中所讨论的情况而言,它可能是我们最接近它的。

  1. 通过反思,获取从页面继承的程序集中的所有类型。
  2. 使用递归I / O搜索,查找根文件夹下的所有* .aspx文件并将它们保存在列表中(这样您就可以检索它们的完整路径等等
  3. 将您找到的类型与您提取的文件进行比较。这样,您可以报告不在正确文件上的页面(类)和不在正确位置的ASPX。
  4. 我找不到类型和它的源文件之间的关系。此外,我们讨论的是Pages(在程序集中声明)和ASPX文件,这些文件完全没有关系。

    如果有人有更好的解决方案,我也想看看它。

    此致

答案 1 :(得分:0)

页面与根的相对路径位于AppRelativeTemplateSourceDirectory属性(页面上)。这就是你追求的目标吗?