ObjectDisposedExceptions and IsolatedStorageException

Home Forums Open-Xml-Sdk ObjectDisposedExceptions and IsolatedStorageException

This topic contains 2 replies, has 2 voices, and was last updated by  cygnus18 3 years, 8 months ago.

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #8847

    cygnus18
    Participant

    We’re receiving the following exceptions constantly in Production, but not in our Dev and Test environments. running locally using development server also does not cause these exceptions.
    ASP.NET MVC Application

    ObjectDisposedException – Can not access a closed Stream.
    at System.IO.Compression.DeflateStream.EnsureNotDisposed() at
    MS.Internal.IO.Packaging.CompressStream.Flush() at
    IsolatedStorageException – Unable to create mutex. (Exception from HRESULT: 0x8013146
    there are a lot of references to MS.Internal.IO.Packaging in our stack trace

    We’ve set LoadUserProfile = True in our application pool advanced settings and see the IsolatedStorage folders under our application pool.

    It’s my understanding that there is a known bug in .NET System.IO.Packaging because it uses IsolatedStorage (which is not thread safe nor can support more than one process using it) when memory usage goes above 10mb. There seems to be a fix for this going back to OpenXML SDK version 2.6. We were using an old version of OpenXML (2.5). This fix uses an implementation of IO.Packaging that does not use IsolatedStorage

    Post about the fix in 2015

    Announcing the Release of a New System.IO.Packaging Implementation

    I’ve installed the latest SDK (DocumentFormat.OpenXml 2.11.3) which has a dependency on System.IO.Packaging” version=”4.7.0″, and it was installed as well. I have references in my project to both of these assemblies.

    Has anyone faced this problem or have any suggestions about what I could be missing here?

    #8848

    Eric White
    Keymaster

    I have never heard that this has been fixed in .NET, although my information may be out of date.

    If you have multithreaded access, you have only two options:
    – Use .NET core, which has a new implementation of System.IO.Packaging.
    – Put all Open XML processing out into a separate process (not thread), then use inter process communication.

    This includes if you are running on a web server that essentially uses multithreading.

    Eric

    #8851

    cygnus18
    Participant

    Thanks for the response Eric. I know this isn’t the place for an in depth discussion of ASP.NET multithreading in IIS. However, since we have very few people in our environment and at times I’m the only person testing I have to assume that potentially multiple threads/worker processes are handling a single request to the server. We currently have 3 load balanced servers in our environment and dev and test each have 2 load balanced servers. I’m not seeing this issue in dev or test. Am I just getting lucky here, and this problem could surface at any moment in our dev and test applications?

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic.