C# 重命名.csv文件并尝试立即打开会提供打开只读模式的选项
我在重命名test6.csv文件时发现系统上有一个奇怪的行为,并立即尝试打开它,然后我的Microsoft Excel给了我三个选项:C# 重命名.csv文件并尝试立即打开会提供打开只读模式的选项,c#,asp.net-mvc,ssis,C#,Asp.net Mvc,Ssis,我在重命名test6.csv文件时发现系统上有一个奇怪的行为,并立即尝试打开它,然后我的Microsoft Excel给了我三个选项: 只读 通知 取消 基本上,我是在调查我的SSIS作业中发生的一个问题,该问题因错误而失败 “进程无法访问该文件 “\\share\ABCD\UploadFiles\20180614\u 025323\u test6.csv” 因为它正被另一个进程使用。” 系统流程为- 用户上载文件-成功 ASP.NET MVC Controller将此文件保存在共享位置并重命名
private bool TryProcessFileUpload(HttpFileCollection files, out FileUploadInfo fileInfo, out string generatedFileName)
{
fileInfo = null;
generatedFileName = string.Empty;
if (files == null || files.Count == 0)
return false;
// This illustrates how to get the file names.
HttpPostedFile file = files[0];
if (file != null)
{
fileInfo = new FileUploadInfo(GetFileName(file.FileName), User.Identity.Name);
string gfn = fileInfo.GenerateFileName();
generatedFileName = gfn;
var fileSaveToPath = GetFileStoragePath(gfn);
file.SaveAs(fileSaveToPath);
return true;
}
return false;
}
我需要帮助来解决我的主要问题,即SSIS,如果有人知道的话,我渴望了解.csv重命名行为。问题在于编辑文件后您似乎没有关闭流。脚本结束后,另一个操作仍在使用该文件。将流代码放在using块中。这将自动关闭流,并使您能够以读/写权限打开文件
using( /* stream goes here */ )
{
}
好奇您正在测试的CSV文件有多大。在您的
if(file!=null)
代码块中,为什么需要读取该文件?另外,您是否尝试过在读取时关闭流,如stream.close()
?@STLDeveloper文件大小小于1MB@Aamol如果我没记错的话,在重命名文件后,您没有关闭流。首先,您必须关闭流,然后才能访问您的文件。@AD8我已删除了不必要的代码,并更新了相关内容。但是仍然得到相同的错误。@Aamol“查找我的更新代码”是什么意思?