nopcommerce在写入操作期间发生磁盘错误。 (从HRESULTexception:0x8003001D(STG_E_WRITEFAULT))

我工作在nopcommerce解决scheme3.90,而导入产品,从Excel文件我得到这个exception。 我的代码如下

public virtual void ImportProductsFromXlsx(Stream stream) { try { #region Import business Logic using (var xlPackage = new ExcelPackage(stream)) { //get the first worksheet in the workbook var worksheet = xlPackage.Workbook.Worksheets.FirstOrDefault(); if (worksheet == null) throw new NopException("No worksheet found"); //the columns var properties = GetPropertiesByExcelCells<Product> (worksheet); var manager = new PropertyManager<Product> (properties); var attributProperties = new[] ..... ..... } } 

StackTrace : –

OfficeOpenXml.Utils.CompoundDocument.GetLockbyte(MemoryStreamstream)在OfficeOpenXml.ExcelPackage.Load(streaminput,stream输出,string密码)OfficeOpenXml.Utils.CompoundDocument.ILockBytes.WriteAt(Int64 ulOffset,IntPtr pv,Int32 cb,UIntPtr&pcbWritten) )在OfficeOpenXml.ExcelPackage.Load(streaminput)在OfficeOpenXml.ExcelPackage..ctor(streamnewStream)在Nop.Services.ExportImport.ImportManager.ImportProductsFromXlsx(streamstream)在d:\ Arsh \ nop3.90 \ Libraries \ Nop。 Services \ ExportImport \ ImportManager.cs:第330行

解决scheme我已经尝试的是

  1. 使用.xlsx扩展名重新保存要上传的文件。
  2. 使用Memorystream对象。
  3. 添加文件名称(Worksheets.Add(“Worksheet Name”);)
  4. 删除标题文本(即标题列,如名称,说明等)

PS我正在使用Nopcommerce。 这是import产品的内置代码。

请尝试使用Excel 2010+,因为早期版本的Excel在encryption/解密algorithm上有所不同。

你可以在这里阅读更多关于encryption/解密的信息 。