根据查询字符串中提供的相对 URL 检查 ASP.NET WebForms 页面是否存在

Check if ASP.NET WebForms page exists based upon relative URL provided in Query String

给定一个格式为“~/folder/page.aspx”的查询字符串url,有没有办法检查该页面是否存在于应用程序范围内?


我正在修复一个小错误,如果用户尝试从一组 public 仅可访问的应用程序错误页面登录到应用程序,那么他们是重定向回 public 错误页面。如果用户从此状态登录到应用程序,我被要求将用户重定向到主主页。

到目前为止,我已经通过在 switch 语句中对受影响页面的路径进行硬编码并根据硬编码路径检查查询字符串来解决此问题。我觉得这很糟糕而且很糟糕,我希望有一个更动态的解决方案,但我似乎找不到。

如有任何帮助,我们将不胜感激。


编辑 - 具体来说,我的首选解决方案是简单地检查查询字符串 url 定义的路径(事先不了解确切格式)是否指向范围内的指定文件夹申请。

所以,在进一步查看之后,我发现了 Server.MapPath。我可以将它与 System.IO.Directory 结合使用,以查看文件是否包含在目录中。

string targetUrl = Request.QueryString["redirect"];
string serverUrlPath = Server.MapPath(targetUrl);
string serverDirPath = Server.MapPath("~/ErrorPages");

foreach (string file in Directory.EnumerateFiles(serverDirPath))
{
  if (file.Equals(serverUrlPath, StringComparison.OrdinalIgnoreCase))
  {
    Response.Redirect(Master.ProjectSearchRedirect());
  }
}

Response.Redirect(targetUrl);

我希望有更精致的东西(即使只是一种 Directory.Contains 的封装)。