Отладка таинственного сбоя IIS

У меня есть веб-приложение ASP.NET MVC, которое интегрирует нашу управляемую библиотеку С#, которая загружает неуправляемые плагины для обработки файлов. Эти неуправляемые плагины, в свою очередь, полагаются на несколько сторонних библиотек для выполнения своей грязной работы; некоторые из них вызывают сбой IIS.

Мы используем точно такую ​​же библиотеку в настольном приложении, которое отлично справляется с файлами. Файлы также прекрасно обрабатываются при работе под веб-сервером Cassini, который поставляется с Visual Studio 2008 (IIS и Cassini работают в одной и той же папке на моем локальном компьютере).

Я провел анализ сбоев с помощью диагностики отладки (изображение) из которого я не могу извлечь никакой полезной информации.

Я немного использовал procexp, чтобы увидеть, есть ли какие-либо неудачные попытки доступа к файлу или реестру, которые могут вызывать проблему, но не увенчались успехом. Я не видел ни одного, но мог бы легко пропустить их, учитывая количество строк, созданных в такого рода журналах.

Я настроил пул приложений для использования учетной записи домена и сделал эту учетную запись администратором в своем ящике, думая, что это может быть проблема с разрешением, но не повезло. Существуют ли другие ограничения доступа в IIS, о которых я не знаю?

Предложения? Статьи? Инструменты? Вуду?

EDIT: мне удалось отладить это до процедуры инициализации сторонней библиотеки. Поскольку библиотека отлично работает на других хостах, я подозревал либо проблему с правами доступа, либо проблему с памятью. Оказалось, что это ограничение размера стека при работе под IIS. См. Размеры стека в IIS — влияет на ASP.NET


person Todd Smith    schedule 15.07.2010    source источник
comment
Можете ли вы внести некоторые записи в код, к которому у вас есть доступ, чтобы помочь вам отследить точное место, когда сторонние компоненты вызывают сбой? Например, сбой может быть вызван всегда одним и тем же вызовом функции; знание чего-то подобного может помочь вам решить проблему лучше, чем просто знание того, что сторонний компонент каким-то образом вызывает сбой IIS.   -  person stakx - no longer contributing    schedule 16.07.2010


Ответы (1)


Похоже, вам следует попробовать включить 32-разрядные приложения в пуле приложений. Interop не очень хорошо работает с двоичными файлами, скомпилированными для 32-разрядной версии, если вы используете 64-разрядную версию.

person Magnus von Wachenfeldt    schedule 15.07.2010
comment
У меня для параметра «Включить 32-разрядные приложения» установлено значение «Истина» для пула приложений. - person Todd Smith; 16.07.2010