C# 如何检查ASP.NET MVC 4中是否存在文件

C# 如何检查ASP.NET MVC 4中是否存在文件,c#,asp.net-mvc-4,relative-path,C#,Asp.net Mvc 4,Relative Path,我正在开发一个ASP.netmvc4应用程序。我允许用户上传文件,但我想在服务器上用不同的名称保存它们,因此我创建了helper方法,该方法应返回要使用的GUID。尽管这可能永远不会发生,但我仍想检查是否有一个文件具有相同的GUID名称,因此我将此作为代码: public static string GetUniqueName(string pathToFile) { bool IsUnique = false; string gu

我正在开发一个
ASP.netmvc4
应用程序。我允许用户上传文件,但我想在服务器上用不同的名称保存它们,因此我创建了helper方法,该方法应返回要使用的
GUID
。尽管这可能永远不会发生,但我仍想检查是否有一个文件具有相同的
GUID
名称,因此我将此作为代码:

public static string GetUniqueName(string pathToFile)
        {
            bool IsUnique = false;
            string guid = null;

            while (!IsUnique)
            {
                guid = Guid.NewGuid().ToString("N");
                var path = System.IO.Path.Combine(pathToFile, "login.jpg");

                if (!System.IO.File.Exists(path))
                {
                    IsUnique = true;
                }
            }

            return guid;
        }
正如您所看到的,文件名是硬编码的,仅用于测试目的,因为我知道有这样的文件

要保存文件,我使用以下命令:

var path = System.IO.Path.Combine(Server.MapPath("~/Content/NewsImages"), fileName);
而且工作正常。因此,当我尝试调用静态方法时,我通过如下方式传递仲裁:

string test = Helper.GetUniqueName("~/Content/NewsImages");
但在调试中我看到了这一点

System.IO.Path.Combine(pathToFile, "login.jpg");
返回
~/Content/newsmages\\login.jpg
,因此我决定更改传递给的参数:

string test = Helper.GetUniqueName("~\\Content\\NewsImages");
现在会产生
~\\Content\\newsmages\\login.jpg
,看起来不错,但随后会出现:

            if (!System.IO.File.Exists(path))
            {
                IsUnique = true;
            }

我通过了检查,即使我知道我要检查的目录中存在这样一个文件。如何解决此问题?

调用应使用的帮助器方法时,这将从虚拟路径转换为物理路径,例如

string test = Helper.GetUniqueName(Server.MapPath("~/Content/NewsImages"));

谢谢,它修好了道路。现在它相应地返回正确的结果。