urlmon.dll FindMimeFromData () отлично работает на 64-битном десктопе / консоли, но выдает ошибки на ASP.NET

Я создаю библиотеку утилит для использования как в настольной среде, так и в веб-среде.

Он содержит несколько функций, которые, как мне кажется, часто повторяются в моих приложениях, в том числе утилиту для получения файла типа mime по его содержимому (а не по расширению).

Файлы, которые мне нужно проверить, являются наиболее распространенными (jpg, png, pdf, txt), поэтому я решил использовать внешний методFindMimeFromData (ссылка выше)

Используя .NET, как вы можете найти MIME-тип файла на основе сигнатуры файла, а не расширения

Метод работает хорошо, за исключением двух неправильных типов пантомимы JPG (image/pjpg) и PNG (image/x-png), легко решается путем проверки перед оператором возврата.

Библиотека скомпилирована для платформы AnyCPU, потому что она должна быть установлена на серверах / клиентах как в 32, так и в 64 битах.

На момент тестирования в среде рабочего стола все работало нормально для обоих приложений, скомпилированных для x86 и x64.

во время тестирования приложения ASP.NET (пустой сайт с обработчиком http для теста) возникает ошибка типа HRESULT, и отладчик сообщает мне, что не может предоставить дополнительную информацию.

После нескольких тестовых настроек, включая изменение идентификатора пула на Local System (без результата), я обнаружил проблему:

пул должен разрешать 32-битные приложения (см. изображение выше).

Почему?

Не должен загружать dllurlmon.dll 64-битной системы, где мы сейчас находимся?

Это большая проблема, потому чтоFindMimeFromData метод может быть вызван везде в эту библиотеку:

В результате вызов этого метода другим вспомогательным методом может вызвать это исключение и усложнить отслеживание проблемы также посредством отладки.

Есть идеи / опыт?

Операционные системы, используемые для тестирования

Рабочий стол:

Windows 8 x64 -работаетWindows 7 x64 -работаетWindows Server 2008 Standard R2 x64 -работаетWindows Server 2008 Standard x86 -работаетWindows Server 2003 Standard x86 -работаетWindows XP Professional SP3 -работает

веб-сайт:

Windows 8 x64 -обнаружена первая ошибка, работает только с включенным 32-битным приложениемWindows Server 2008 Standard R2 x64 -ошибка подтверждена, работает только с включенным 32-битным приложениемWindows Server 2008 Standard x86 -работает

РЕДАКТИРОВАТЬ 2 (вопрос решен)

РешеноNoseratio:

Правильный тип параметровppwzMimeOut а такжеpBC должно бытьSystem.IntPtr вместоSystem.UInt32.

я знаю этоSystem.UInt32 вызывает проблемы в полноценных 64-битных веб-приложениях, но я не знаю почему.

Если кто-то знает причину этих проблем, может лучше объяснить это в комментарии?

заранее спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос