我在重命名test6.csv文件时发现了一个奇怪的行为,并立即尝试打开它然后我的Microsoft Excel给了我三个选项:
只读
通知
取消
基本上我正在调查我的SSIS作业中发生的问题,该问题因错误而失败
"进程无法访问该文件 ' \\共享\ ABCD \ UploadFiles \ 20180614_025323_test6.csv' 因为它正在被另一个进程使用。"
系统流程是 -
用户上传文件 - 成功
ASP.NET MVC Controller将此文件保存在共享位置并重命名 - 成功
SSIS作业识别此文件并按照说明阅读其内容和流程 - 失败
最初我虽然可能是因为MVC Controller没有关闭它的处理程序,因为它可能导致问题但后来我发现MVC Controller正在使用HttpPostedFile,我们不需要显式关闭,因为请求结束它将被关闭。 (参考 - https://stackoverflow.com/a/9316876/698127)
这是由MVC控制器操作
调用的文件保存代码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重命名行为。
答案 0 :(得分:0)
问题是您在编辑文件后似乎没有关闭您的信息流。脚本结束后,该文件仍由另一个操作使用。将您的流代码放在使用块中。这将自动关闭流,并可以使用读/写权限打开您的文件。
using( /* stream goes here */ )
{
}