模拟后找不到File.Exists()文件

时间:2018-10-12 10:15:48

标签: c# webforms

首先,我在WebForms ASP.NET中。

在我写的一种方法中,

        string source = Global.PathTempFile + fileNamePosted + ".htm";
        using (FileStream fs = new FileStream(source, FileMode.Create))
        {
            using(StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
            {
                w.WriteLine(Request.Form["hide_redige"]);
            }
        }
        bool exist = File.Exists(source); // true here (for test)

        new MoveFile(source, Global.HADmdcdc + "\\" + fileNamePosted + ".htm", true);

此代码在我的临时文件夹中创建一个新文件, 目前,该文件已被File.Exists()识别

但是,出于安全原因,我创建了一个类来以特定用户身份操作文件(该类具有在目标文件夹中写入的权限)

    public MoveFile(string sourcePath, string targetPath, bool isImpersonate)
    {
        if (isImpersonate)
            moveImp(sourcePath, targetPath);
        else
            move(sourcePath, targetPath);
    }
    private void moveImp(string sourcePath, string targetPath)
    {
        if (imp.impersonateValidUser(id["domain"], id["login"], id["password"]))
            move(sourcePath, targetPath);

        imp.undoImpersonation();
    }
    private void move(string sourcePath, string targetPath)
    {
        if (File.Exists(sourcePath)) // false here
        {
            if (File.Exists(targetPath))
                File.Delete(targetPath);

            File.Move(sourcePath, targetPath);
        }
    }

所以,我的问题是,为什么File.Exists()的测试返回不同的值? 另外,我确定该文件存在。

1 个答案:

答案 0 :(得分:0)

如果文件存在,这听起来像是权限问题。

您需要检查Application pool的权限

要找到您的Application pool名称:

enter image description here

enter image description here

现在,当您找到自己的Application pool时 打开它:

enter image description here

挑战它的持久性:

enter image description here enter image description here

选择自定义帐户:

enter image description here

设置一个可以访问文件目录的用户