File.Exists使用错误的根路径?

时间:2011-03-17 19:55:54

标签: c# asp.net

在我写的c#类中,我有一个照片属性,如果图像存在则返回照片源(否则为默认图像)。在我的代码中,我使用:

    public string Photo
    {
        get
        {
            string source = "~/images/recipes/" + id + ".jpg";

            if (File.Exists(source))
                return "~/images/recipes/" + id + ".jpg";
            else
                return "";
        }
    }

如果我收到此图像的FileInfo()信息,我看到我试图在以下目录中找到此图像: C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ 〜\图像\配方

当然图像不在该目录中,而File.Exists正在返回错误的值。但我该如何解决这个问题呢?

3 个答案:

答案 0 :(得分:11)

试试这个:

if(File.Exists(System.Web.HttpContext.Current.Server.MapPath(source)))

答案 1 :(得分:2)

您需要将相对路径映射回物理路径:

string source = HttpContext.Current.Server.MapPath("~/images/recipes/" + id + ".jpg");

答案 2 :(得分:0)

你必须使用:

Server.MapPath(source)

因为你无法100%确定代码的运行位置,即。它在开发和生产服务器上会有所不同。你还确定〜/在windows中工作吗?不会被解释为名为〜的目录吗?除非那就是你想要的。