Pregunta

Mis asambleas que envolver un trabajo DLL de terceros bien en mi aplicación de instrumento de prueba ventanas, y también excelente trabajo en un servicio web cuando se generó en modo de depuración (VS 2008 Visual Studio servidor de desarrollo)! Sin embargo, la aplicación siempre se bloquea cuando se ejecuta en el IIS 7 servidor web local. Ahí está el detalle accidente del registro de eventos cuando se ejecuta en el servidor local de IIS:

  

Aplicación con errores w3wp.exe, versión   7.0.6001.18000, el tiempo 0x47919413 sello, errores Módulo ntdll.dll, versión   6.0.6001.18000, marca de tiempo 0x4791a783, código de excepción 0xc0000374, culpa   compensado 0x000aada3, identificador de proceso 0x990,   hora de inicio de aplicaciones   0x01c9b4133281d5d0.

Discusión: Escribí una envoltura alrededor de un DLL .NET desde un tercero (LinkPointTransaction.dll de FirstData), y escribí algunos otros conjuntos que hacen referencia a que la envoltura. A medida que se ejecuta el código, una llamada a la LinkPointTransaction.LinkPointTxn.Send() terceros envíe la transacción con éxito para FirstData en internet, pero mis aplicación se bloquea en algún lugar W3WP.exe durante esa llamada, antes de que llegue la siguiente línea. No lanzar una excepción administrado que puedo ver; que sólo se bloquea. Funciona bien en todas partes en mi máquina excepto en IIS7.

Estoy corriendo Vista Home Premium de 64 bits (IIS 7), pero Habilité aplicaciones de 32 bits en IIS, creado una AppPool separada sólo para este servicio web, y han obligado a todos mis montajes a x86. He tratado de ejecutar el grupo de aplicaciones bajo mi cuenta de usuario con privilegios de administrador en lugar de que el servicio de red. UAC está apagado. He tratado modos Clásico integrado y. He abierto explícitamente el puerto TCP / IP en mi servidor de seguridad local que el LinkPointTransaction.dll utiliza para comunicarse con FirstData. Incluso me he cerrado mi firewall desactivado (detrás de un router).

Con cualquiera de estas soluciones que he enumerado, que siempre trabaja en una aplicación de Windows y también en un servicio web en el servidor de desarrollo VS, pero Nunca que funciona en el servidor IIS local.

El AppPool para el sitio web de IIS está en modo clásico. (En respuesta a Gidon)

¿Fue útil?

Solución

No creo que esto es una cuestión de programación más, así que estoy 'responder' a él.

El uso de WinDbg, he rastreado hasta el DLL proporcionada por el vendedor. Cuando la aplicación se bloquea, se ve como un problema con la forma en la DLL es la memoria de-asignando. La pila de llamadas muestra una operación de memoria libre en el DLL, a continuación, una operación de "montón libre" en el núcleo, a continuación, un "montón libre" operación en ntdll, y un "fracaso informe montón" posterior (y luego RtlReportCriticalFailure) que destruye la cosa entera.

Yo todavía no entiendo por qué funciona en una aplicación Windows Forms y en IIS 6, pero no trabajo en IIS 7. Sin embargo, esto se ha convertido en más de una pregunta que una pregunta plataforma de 'programación'. Además, es probable que la responsabilidad del proveedor para fijarlo en lugar de la mina para trabajar alrededor de ella.

Actualizar : Al cabo de dos días de presentar el ticket de soporte técnico con el vendedor, que proporcionaron un conjunto actualizado de las DLL de integración que utilizan un objeto COM que se registre con regsvr32, y funciona en IIS7 de 64 bits si se registra en el directorio WOW64. YEA DE DATOS PRIMER SOPORTE TÉCNICO!

Otros consejos

Me preguntó por primera vez datos sobre las DLL y ser capaz de ejecutarlo en IIS7 / .NET 4 / Win 2008 de 64 bits. Esta fue su respuesta:

  

Gracias por su consulta reciente sobre First Data Global Gateway. La API de servicio web es nuestra solución actual para máquinas de 64 bits que se ejecutan en IIS 7 como se actualizará ninguno de los archivos DLL (Linkpointtransaction.dll, LPICOM_6_.dll) para trabajar con el servidor de 64 bits. API de servicio web será necesario instalar el certificado de cliente y enviar la transacción a través de solicitud SOAP. Información adicional sobre API de servicio web se encuentra en http : //www.firstdata.com/downloads/marketing-merchant/FDGG-Web-Service-API-v4.0.pdf .

     

Si necesita más aclaraciones o preguntas, por favor, póngase en contacto con nuestro servicio de soporte a través del número de teléfono a continuación. Se informa a las horas de servicio de soporte de la API es del 9:00 AM a 6:00 PM EST lun-vie

Esto debería ayudar a otros en busca de información similar en el futuro.

¿Cómo se configura el sitio web de IIS 7? Si se está ejecutando en el modo integrado de cambiar al modo clásico. Consulte Fractura Cambios para ASP.NET 2.0 aplicaciones que se ejecutan en el modo integrado en IIS 7.0

He tenido un problema muy similar, y después de jugar con él durante varios días, me he dado cuenta de que si corro el mismo código una y otra vez en MSTest, a veces se produce un error y se bloquea por completo el proceso de prueba, otra tiempos que funciona bien.

Lo realmente extraño es que ocurre con mayor frecuencia cuando la depuración de una MSTest, PERO, si hago clic en el interior del método de ensayo, a continuación, en la barra de botones principal haga clic en "pruebas de depuración en el contexto actual", entonces falla casi siempre. Si en lugar ejecutar la prueba haciendo clic en "depuración" en los "Resultados de la prueba" ventana, entonces es casi siempre pasa correctamente.

También casi siempre funciona correctamente si no se ejecutan en modo de depuración, pero aún así a veces no. Incluso he Gona por lo que copiar / pastign exactamente el mismo código entre 2 proyectos diferentes en 2 diferentes instancias VisualStudio 2010, y en uno de ellos el código se ejecute correctamente, y en otro se producirá un error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top