Интеграция платежей LinkPoint с IIS7 приводит к сбою w3wp.exe - PullRequest
3 голосов
/ 03 апреля 2009

Мои сборки, которые обертывают сторонние библиотеки 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 находится в классическом режиме. (В ответ на Гидон)

Ответы [ 4 ]

4 голосов
/ 04 апреля 2009

Я больше не думаю, что это вопрос программирования, поэтому я «отвечаю» на него.

Используя WinDbg, я отследил его до dll, предоставленного поставщиком. Когда приложение аварийно завершает работу, это выглядит как проблема с тем, как DLL освобождает память. Стек вызовов показывает операцию освобождения памяти в dll, затем операцию «без кучи» в ядре, затем операцию «освобождения кучи» в ntdll и последующую «ошибку кучи отчета» (а затем RtlReportCriticalFailure), которая разрушает все дело.

Я до сих пор не понимаю, почему это работает в приложении Windows Forms и в IIS 6, но не работает в IIS 7. Однако это стало скорее вопросом платформы, чем вопросом «программирования». Кроме того, ответственность за исправление ошибок лежит на продавце, а не на мне.

ОБНОВЛЕНИЕ : в течение двух дней после подачи заявки в службу технической поддержки у поставщика они предоставили обновленный набор библиотек DLL интеграции, использующих COM-объект, который вы зарегистрировали в regsvr32, и он работает в IIS7 -bit, если вы зарегистрируете его в каталоге WOW64. YEA ДЛЯ ПЕРВОЙ ТЕХНИЧЕСКОЙ ПОДДЕРЖКИ ДАННЫХ!

1 голос
/ 15 августа 2011

Я спросил First Data о библиотеках DLL и возможности их запуска на 64-битной IIS7 / .NET 4 / Win 2008. Это был их ответ:

Спасибо за ваш недавний запрос относительно First Data Global Gateway. API Webservice - это наше текущее решение для 64-битных компьютеров, работающих на IIS 7, поскольку ни один из файлов dll (Linkpointtransaction.dll, LPICOM_6_.dll) не будет обновлен для работы с 64-битным сервером. Webservice API потребует установить клиентский сертификат и отправить транзакцию через SOAP-запрос. Дополнительная информация об API Webservice находится по адресу http://www.firstdata.com/downloads/marketing-merchant/FDGG-Web-Service-API-v4.0.pdf.

Если вам нужны дополнительные разъяснения или вопросы, пожалуйста, свяжитесь с нашей службой поддержки по телефону ниже. Обратите внимание, что часы работы службы поддержки API с 9:00 до 18:00 по восточному поясному времени с понедельника по пятницу.

Это должно помочь другим в будущем искать подобную информацию.

0 голосов
/ 29 марта 2011

У меня была очень похожая проблема, и, потратив на это несколько дней, я понял, что, если я запускаю один и тот же код снова и снова в MSTest, иногда происходит сбой и происходит полный сбой процесса тестирования, другие раз он работает нормально.

Действительно странная вещь заключается в том, что чаще всего это происходит при отладке MSTest, НО, если я щелкаю внутри метода test, затем на главной кнопочной панели нажимаю «отладка тестов в текущем контексте», тогда он почти всегда дает сбой. Если вместо этого я запускаю тест, нажимая «отладка» в окне «Результаты теста», то он почти всегда проходит правильно.

Он также почти всегда работает правильно, если я не запускаю в режиме отладки, но иногда все равно не работает. Я даже собирался копировать / вставлять один и тот же код между двумя разными проектами в двух разных экземплярах VisualStudio 2010, и в одном из них код будет работать правильно, а в другом - не получится.

0 голосов
/ 03 апреля 2009

Как настроен веб-сайт в IIS7? Если он работает в интегрированном режиме, переключитесь в классический режим. См. Срочные изменения для приложений ASP.NET 2.0, работающих в интегрированном режиме на IIS 7.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...