重命名.csv文件并尝试立即打开,提供打开只读模式的选项

时间:2018-06-14 02:19:02

标签: c# asp.net-mvc ssis

我在重命名test6.csv文件时发现了一个奇怪的行为,并立即尝试打开它然后我的Microsoft Excel给了我三个选项:

  1. 只读

  2. 通知

  3. 取消

  4. 基本上我正在调查我的SSIS作业中发生的问题,该问题因错误而失败

      

    "进程无法访问该文件   ' \\共享\ ABCD \ UploadFiles \ 20180614_025323_test6.csv'   因为它正在被另一个进程使用。"

    系统流程是 -

    1. 用户上传文件 - 成功

    2. ASP.NET MVC Controller将此文件保存在共享位置并重命名 - 成功

    3. SSIS作业识别此文件并按照说明阅读其内容和流程 - 失败

    4. 最初我虽然可能是因为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重命名行为。

1 个答案:

答案 0 :(得分:0)

问题是您在编辑文件后似乎没有关闭您的信息流。脚本结束后,该文件仍由另一个操作使用。将您的流代码放在使用块中。这将自动关闭流,并可以使用读/写权限打开您的文件。

using( /* stream goes here */ )
{

}