Сбой инициализации в IsolatedStorage - PullRequest
8 голосов
/ 10 октября 2011

Я использую библиотеку EPPlus 2.8.0.2 в своем приложении ASP.NET MVC 3 для создания файлов Excel.Это приложение работает на IIS 6 в Windows Server 2003 R2.

Неисправная строка:

xlsdoc.GetAsByteArray

xlsdoc - это правильно загруженный объект ExcelPackage.

Создание небольшого выводаЭто нормально, но генерация больших выходных данных приводит к ошибке:

System.IO.IsolatedStorage.IsolatedStorageException: Initialization failed.
   at System.IO.IsolatedStorage.IsolatedStorageFile.Init(IsolatedStorageScope scope)
   at System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType)
   at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder.GetCurrentStore()
   at MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder..ctor()
   at MS.Internal.IO.Packaging.PackagingUtilities.GetDefaultIsolatedStorageFile()
   at MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount, String& fileName)
   at MS.Internal.IO.Packaging.SparseMemoryStream.SwitchModeIfNecessary()
   at MS.Internal.IO.Packaging.SparseMemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Packaging.CompressEmulationStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Packaging.CompressStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
   at System.IO.StreamWriter.Write(String value)
   at System.IO.TextWriter.Write(String format, Object arg0)
   at OfficeOpenXml.ExcelWorksheet.UpdateRowCellData(StreamWriter sw)
   at OfficeOpenXml.ExcelWorksheet.SaveXml()
   at OfficeOpenXml.ExcelWorksheet.Save()
   at OfficeOpenXml.ExcelWorkbook.Save()
   at OfficeOpenXml.ExcelPackage.GetAsByteArray(Boolean save)
   at OfficeOpenXml.ExcelPackage.GetAsByteArray()
   at ReportCenterLib.ReportGenerator.GenerateStream(DataTable result, String reporttitle, String inputparmstr, String conndescs, String username, String outputtype, String templatefile) in D:\PROJECTS\reportcentermvc\sources\ReportCenterLib\ReportGenerator.vb:line 450
   at ReportCenterMVC.ReportCenterMVC.ReportController.Generate(Int64 id, IList`1 conns, IDictionary`2 parms, String outputtype) in D:\PROJECTS\reportcentermvc\sources\ReportCenterMVC\Controllers\ReportController.vb:line 218

Я подозреваю, что EPPlus пытается создать временные файлы, используя IsolatedStorage, но не имеет разрешения на запись в IsolatedStorage.Я изменил удостоверение пула приложений на «локальная система», и ошибка исчезла.

Как избежать этой ошибки при использовании удостоверения «сетевой службы»?

Ответы [ 2 ]

8 голосов
/ 11 октября 2011

Кто-то писал об этом . Ошибка, которую он получил (доступ запрещен), отличалась от ошибки, которую я получил, но его решение мне помогло:

  • Создать папку на сервере в C:\Documents and Settings\Default User\Local Settings\Application Data\IsolatedStorage
  • Предоставить всем пользователям доступ для записи в эту папку
0 голосов
/ 06 августа 2014

Здесь обсуждается: http://openxmldeveloper.org/

извлечение:

создать папку с именем IsolatedStorage по следующему пути "C: \ Documents and Settings \ Default User \ Local Settings\ Application Data "и дайте IIS_WPG разрешение на изменение и запись.Это решает проблему на Windows Server 2003

...