iam试图告诉页面打开某个aspx,如果它存在,否则它应该重定向到另一个页面这里代码iam使用:
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");
}
}
但即使原始页面存在,我也会一直重定向到page.aspx
感谢
答案 0 :(得分:3)
您需要将完整路径传递给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");
}
答案 1 :(得分:2)
我猜这是因为你正在使用〜。 〜用于解析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"")
答案 2 :(得分:0)
我要小心~path别名。我尝试使用绝对路径而不是别名,看看是否有帮助。如果它始终重定向到Page.aspx
,则您认为正在查看的文件不存在。
答案 3 :(得分:0)
放弃〜
string str = string.Format("/User/{0}/{0}.aspx",Page.User.Identity.Name);
string path = Server.MapPath(str)