【问题标题】:Fail to read file - ReadTimeout and WriteTimeout无法读取文件 - ReadTimeout 和 WriteTimeout
【发布时间】:2019-08-24 23:51:04
【问题描述】:

这是一个简单的代码,但一直无法读取 Excel 文件。我之前使用过 using 语句,认为 mayeb 在读取前使用 dispose 但仍然是同样的问题。

ReadTimeout = 'file.ReadTimeout' 引发了“System.InvalidOperationException”类型的异常

WriteTimeout = 'file.WriteTimeout' 引发了“System.InvalidOperationException”类型的异常

    string filePath = @"C:\Users\test\source\repos\MnMC\MnMC\wwwroot\CFolder\PBot\Files\Incidents\PBot_Incident.xlsx";
        var builder = new BodyBuilder { HtmlBody = "Incident Report." };
        if (System.IO.File.Exists(filePath))
        {
            try
            {
                MemoryStream memoryStream = new MemoryStream();
                    FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                file.CopyTo(memoryStream);
                builder.Attachments.Add("PBot_Incident.xlsx", memoryStream);
            }
            catch (Exception ex)
            {
                throw;
            }
        }

【问题讨论】:

  • 授予对您的 exe 文件的读写权限或以管理员身份运行它或授予管理员对您的 excel 文件的读写权限。
  • 那些“错误”只是调试器通知,MemoryStream 没有实现超时。您必须专注于编写正确的代码,插入 memoryStream.Position = 0;在 CopyTo() 调用之后。并且您必须使用 using 语句才能正确关闭文件。
  • 谢谢汉斯,我一使用 position = 0,它就起作用了。

标签: c#


【解决方案1】:

正如 Hans Passant 所说,ReadTimeout 和 WriteTimeout 不会导致问题。只要我设置 memoryStream.Position = 0。它就解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2012-03-07
    • 2016-06-17
    • 2016-10-19
    • 2016-08-29
    • 2013-12-27
    相关资源
    最近更新 更多