如何打开文件,如果它存在,否则重定向到一个页面

本文关键字:一个 如果 文件 何打开 存在 重定向 | 更新日期: 2023-09-27 17:48:56

我试图告诉页面打开某个aspx,如果它存在,否则它应该重定向到另一个页面,这里我使用的代码:

   protected void Page_Load(object sender, EventArgs e)
{
    string str = "~/User" + "/" + Page.User.Identity.Name + "/" + Page.User.Identity.Name + ".aspx";
    FileInfo fi = new FileInfo(str);
    if (fi.Exists) {
        Response.Redirect(str);
    }
    else {
    Response.Redirect("Page.aspx");
        }
}

但我总是会重定向到页面。Aspx,即使原始页面存在

谢谢

如何打开文件,如果它存在,否则重定向到一个页面

您需要将完整路径传递给FileInfo。使用Server.MapPath从虚拟路径映射到完整路径,如下所示:

string str = "~/User" + "/" + Page.User.Identity.Name + "/" + Page.User.Identity.Name + ".aspx";
string path = Server.MapPath(str);
if (File.Exists(path)) 
{
    Response.Redirect(str);
}
else
{
    Response.Redirect("Page.aspx");
}

我猜这是因为你正在使用~。~用于解析web URL基路径。不是windows的基本路径。

代替

string str = "~/User" + "/" + Page.User.Identity.Name + "/" + Page.User.Identity.Name + ".aspx";

string str = Server.MapPath("/User" + "/" + Page.User.Identity.Name + "/" + Page.User.Identity.Name + ".aspx"")

我要小心使用~ path别名。我会尝试使用绝对路径而不是别名,看看是否有帮助。如果它总是重定向到Page.aspx,那么你认为你正在查看的文件不存在

删掉~

string str = string.Format("/User/{0}/{0}.aspx",Page.User.Identity.Name);
string path = Server.MapPath(str) 
相关文章: