Мои сборки, которые обертывают сторонние библиотеки DLL, работают отлично в моем приложении для тестирования Windows, и они также работают нормально в веб-сервисе при порождении в режиме отладки (VS 2008 Visual Studio Development Server)! Тем не менее приложение всегда падает при работе на локальном веб-сервере IIS 7. Вот подробности сбоя из журнала событий при запуске на локальном сервере IIS:
Неисправное приложение w3wp.exe, версия
7.0.6001.18000, отметка времени 0x47919413, неисправный модуль ntdll.dll, версия
6.0.6001.18000, отметка времени 0x4791a783, код исключения 0xc0000374, ошибка
смещение 0x000aada3, идентификатор процесса 0x990,
время запуска приложения
0x01c9b4133281d5d0.
Обсуждение: я написал оболочку для DLL-библиотеки .NET от стороннего производителя (LinkPointTransaction.dll из FirstData) и написал несколько других сборок, которые ссылаются на эту оболочку. Когда код выполняется, вызов стороннего LinkPointTransaction.LinkPointTxn.Send()
успешно отправляет транзакцию FirstData через Интернет, но мое приложение аварийно завершает работу w3wp.exe где-то во время этого вызова, прежде чем он попадет на следующую строку. Я не вижу управляемого исключения, которое я вижу; это просто падает Хорошо работает везде на моей машине, кроме IIS7.
Я использую 64-битную Vista Home Premium (IIS7), но я включил 32-битные приложения в IIS, создал отдельный AppPool только для этого веб-сервиса и перевел все свои сборки на x86. Я попытался запустить пул приложений под своей учетной записью с правами администратора, а не в качестве сетевой службы. UAC выключен. Я пробовал интегрированный и классический режимы. Я явно открыл порт TCP / IP в своем локальном брандмауэре, который LinkPointTransaction.dll использует для связи с FirstData. Я даже отключил брандмауэр (за роутером).
С любым из перечисленных мною обходных путей он всегда работает в приложении Windows, а также в веб-службе внутри VS Development Server, но никогда работает на локальном сервере IIS.
AppPool для веб-сайта IIS находится в классическом режиме. (В ответ на
Гидон)