首先,我在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()的测试返回不同的值? 另外,我确定该文件存在。