我正在搜索我的程序集(使用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);
}
}
}
}
}
}
答案 0 :(得分:2)
我找不到类型和它的源文件之间的关系。此外,我们讨论的是Pages(在程序集中声明)和ASPX文件,这些文件完全没有关系。
如果有人有更好的解决方案,我也想看看它。
此致
答案 1 :(得分:0)
页面与根的相对路径位于AppRelativeTemplateSourceDirectory
属性(页面上)。这就是你追求的目标吗?