C# 根据查询字符串中提供的相对URL检查ASP.NET WebForms页是否存在
给定格式为“~/folder/page.aspx”的查询字符串url,是否有方法检查该页面是否存在于应用程序范围内C# 根据查询字符串中提供的相对URL检查ASP.NET WebForms页是否存在,c#,asp.net,webforms,query-string,relative-url,C#,Asp.net,Webforms,Query String,Relative Url,给定格式为“~/folder/page.aspx”的查询字符串url,是否有方法检查该页面是否存在于应用程序范围内 我正在修复一个小错误,如果用户试图从一组可公开访问的应用程序错误页面登录到应用程序,那么他们会被重定向回该公共错误页面。如果用户从这个状态登录到应用程序,我被要求将其重定向到主主页 到目前为止,我已经通过在switch语句中硬编码到受影响页面的路径,并对照硬编码的路径检查querystring来解决这个问题。我觉得这是黑客和坏,并希望有一个更动态的解决方案,但我似乎找不到一个 任
我正在修复一个小错误,如果用户试图从一组可公开访问的应用程序错误页面登录到应用程序,那么他们会被重定向回该公共错误页面。如果用户从这个状态登录到应用程序,我被要求将其重定向到主主页 到目前为止,我已经通过在switch语句中硬编码到受影响页面的路径,并对照硬编码的路径检查querystring来解决这个问题。我觉得这是黑客和坏,并希望有一个更动态的解决方案,但我似乎找不到一个 任何帮助都将不胜感激
编辑-具体来说,我的首选解决方案是检查查询字符串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);
我希望有更精细的东西(甚至只是一个目录。包含某种封装)。有一些方法可以检查URL,使用
WebRequest
,或者由于您正在检查当前应用程序文件夹中的文件,您可以使用File.Exists
,但我不确定您的确切要求,可能有点相关的代码会有帮助。