2016-08-24 3 views
4

Обновлен до последней версии ImageMagick/Magick.NET (7.0.2.901), и он был создан и работал нормально локально, но взрывается на сервере с этой ошибкой.Невозможно найти точку входа с именем «Environment_SetEnv» в DLL «Magick.NET-Q8-x64.Native.dll»

Невозможно найти точку входа с именем «Environment_SetEnv» в DLL «Magick.NET-Q8-x64.Native.dll».

Кажется, это новая проблема. Судя по алфавиту изменений здесь:

https://magick.codeplex.com/discussions/650746

КИ Runtimes больше не требуется, поэтому их установка не будет вопросом - и, я установил 2008, 2012 и 2015 VC для автономной работы предыдущих версий библиотеки, которая отлично работала.

Windows Server 2008 64-разрядная, 64-разрядная .Net 4 в IIS.

Текущее обходное решение - откат до 7.0.0.22, который работает без ошибок.

Install-Package Magick.NET-Q8-AnyCPU -Version 7.0.0.22 

ImageMagick.X64.Environment_SetEnv(IntPtr name, IntPtr value)

+0

Вы не могли бы начать тему здесь: https://magick.codeplex.com/discussions? Тогда я мог бы задать вам несколько вопросов. – dlemstra

+0

Вам это удалось? У меня такая же проблема на моем сервере. Пока он работает нормально –

+0

Я хотел собрать больше диагностических данных, прежде чем публиковать ошибку, и никогда не делал этого.Тот факт, что он должен взорваться на сервере, делает эту диагностику более важной задачей, так как мне действительно нужно выставить ее на сайт, предназначенный для отказа. Будет качаться обратно к нему, хотя. Но, как упоминалось, обходной путь прост, откат до 7.0.0.22 –

ответ

0

Если бы тот же вопрос, исключив все Магического DLLs из папки бин и заново установить ее решил.

5

Я имел этот вопрос пару месяцев назад и в конце концов нашел две отдельных причин:

  1. AnyCPU Конфликт с предыдущими версиями

    Проблема: Magick.NET кэширует родную библиотеку в temp directory , если он не существует (Relevant source code). Поскольку я ранее тестировал версию Q8-x64 (которая не тестировала архитектуру процессора), Magick.NET-Q8-x64.Native.dll уже существовал и не был перезаписан.

    Резолюция: Удалите временную папку родной библиотеки. В моей версии Windows она была расположена по адресу %TEMP%\Magick.NET.{TargetFramework}.{MagickNETVersion}. Версия Q8-AnyCPU затем извлекла новую родную библиотеку с помощью метода Environment_SetEnv.

  2. Отсутствие разрешений в кэше

    Проблема: Уроженец библиотека кэшируются в директории с ограниченными разрешениями для выполнения кода.

    Резолюция: Измените расположение каталога кеша. Мое решение - это следующий код.

    #if DEBUG 
    private static bool MagickCacheDirectoryIsSet = false; 
    
    public DefaultConstructor() 
    { 
        if (!MagickCacheDirectoryIsSet) 
        { 
         ImageMagick.MagickAnyCPU.CacheDirectory = @"path\to\more\permissive\directory"; 
         MagickCacheDirectoryIsSet = true; 
        } 
    } 
    #endif 
    
+1

Я выполнил # 1 (в C: \ Windows \ Temp), и я сделал это: https://stackoverflow.com/a/23308437/1325179. Затем я перезапустил пул приложений. – user1325179

+0

Все, что мне нужно было сделать, - это утилизировать пул приложений. Мне не нужно было удалять временные файлы. – joeshmoe301

Смежные вопросы