如何打开文件,如果它存在,否则重定向到一个页面
本文关键字:一个 如果 文件 何打开 存在 重定向 | 更新日期: 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)