-
-
Notifications
You must be signed in to change notification settings - Fork 415
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Magick.Native-Q8-x64.dll Access Denied (File Locked) #1537
Comments
I would advise you to upgrade to the most recent version. I cannot help you with an older release than the most recent one. You can use |
Your app pool is locking those files. There is not much I can do about that. |
🤔 Ok, so I checked the code and put the magick image objects into a using statement. Currently there are no issues related to the locking of the files. |
Thanks for coming back and mentioning this tip for future readers. This is probably going to help someone in the future! |
So we encountered a bug where presumably IIS is locking the Image Magick DLLs.
I checked the DLL with Dependency Walker x64 and every DLL I scanned contained the aforementioned entry point. Since I had another IM related feature request (the support of HEIC and HEIF files - so we had to move to Q16-HDRI), I noticed, that I had trouble to remove the Magick.Native-Q8-x64.dll with the command |
@pdhenrique3 I am using Magick.Net 7.17.0.0 in my application, and met exactly the same issue some days ago. Not sure how the other version does, by reading the source code of the version I'm using, I see SetNativeLibraryDirectory() not really set the directory for extracting and placing the native libary. In fact, the folder in windows temp folder for placing the native libary named CacheDirectory. Finally I resolved the issue by manually setting the CacheDirectory to other place during starting my application. Below code might help someone who met similar issue. I just put the code snippet in my Application_Start() method of Global.asax.cs.. |
Is this somehow applicable when using nuget packages Magick.NET.Core and AnyCPU.Q16-HDRI? The version is 13.9.1. The error I am getting is MagickAnyCPU does not exist in the namespace ImageMagick. (CS0234 error) |
The |
Magick.NET version
8.2.1
Environment (Operating system, version and so on)
Windows Server 2016, .NET Framework 4.7.1
Description
I have two WebAPI Applications on the same Server, different IIS Application Pools, Magick-Q8 8.2.1 AnyCPU. Both of them applies Magick on images contained in the Temp File Path of the Server.
Inside this Path, Magick generates a folder, containing this file Magick.Native-Q8-x64.dll which is used.
When the first application starts, success, but the file Magick.Native-Q8-x64.dll get locked by the application, and the second application's requests gets the error:
I had to unify both applications under the same Application Pool to make them work, but even if there are no code errors locking the file for any longer than necessary, it happens in some time, and this error could still happen in a much smaller possibility
Steps to Reproduce
In a Microsoft IIS, Two applications using Magick.NET.Core 8.2.1 and Magick.NET-Q8-AnyCPU 8.2.1, each one in your own AppPool
Open a file in the Server's Tem FilePath, perform image resize and compress, save the file
Do this in both applications
The text was updated successfully, but these errors were encountered: