32-битная DLL не загружается с Enable32Mode на IIS 7.5 - PullRequest
3 голосов
/ 12 июня 2011

У меня есть веб-сайт MVC 3, ссылающийся на 32-битную DLL.ОС Windows 2008 R2 x64.Сайт находится в пуле приложений ASP.NET 4.Я включил Enable32Bit, но он не работает.Я получаю исключение Bad Image Exception, но не могу найти, чтобы включить этот уровень входа в IIS.Я настроил страницу, которая выводит, работает ли она 32-битная или 64-битная, и когда я включаю / выключаю Enable32Bit на AppPool, я получаю правильный вывод.Сайт также находится в полном доверии.

Я в растерянности, чтобы попытаться заставить его работать.Я знаю, что это работает на Win7 32bit.

Можете ли вы предложить кое-что попробовать?

ОБНОВЛЕНИЕ: Я только что написал простое приложение для Windows Forms с кнопкой, которая вызывает мою DLL.Он был построен с целью x86, и он работал нормально, так что я думаю, что есть проблема с IIS или ASP.Net.Вот код, который используется для ссылки на DLL:

        [DllImport("CDCrypt.dll")]
        [return: MarshalAs(UnmanagedType.LPStr)]
        public static extern String Encrypt([MarshalAs(UnmanagedType.LPStr)] String aName);



        [DllImport("CDCrypt.dll")]
        [return: MarshalAs(UnmanagedType.LPStr)]
        public static extern String Decrypt([MarshalAs(UnmanagedType.LPStr)] String aName);

ОБНОВЛЕНИЕ 2: Имеет ли значение, является ли конвейер ASP.Net классическим или интегрированным?Я пробовал обе, но одну и ту же проблему, но подумал, что стоит спросить

ОБНОВЛЕНИЕ 3: Я нашел этот вопрос , пытаясь сделать то же самое, и он сдался, которыйне слишком полезно !!

Ответы [ 2 ]

1 голос
/ 12 июня 2011

Убедитесь, что в свойствах проекта все управляемые сборки нацелены на x86 вместо Any CPU или x64.

0 голосов
/ 19 сентября 2013

Лучше, если вы собираете неуправляемую dll в 64-битном режиме или в режиме Any CPU. Иногда она загружает 32-битную сборку, в то время как мы включаем 32-битное приложение в пуле приложений, где размещается приложение.Если он не работает с этой опцией, его следует заменить на 64-битную библиотеку.Также перезапустите пул приложений и перезапустите iis.Надеюсь, это сработает.

...