Pergunta

As minhas montagens que o trabalho envoltório uma DLL de terceiros fina em minhas janelas de equipamento de teste de aplicativos, e eles também belo trabalho em um serviço web quando gerado no modo de depuração (VS 2008 Visual Studio Development Server)! No entanto, o aplicativo sempre falha quando em execução no servidor web IIS 7 local. Aqui está o detalhe acidente de log de eventos quando em execução no servidor IIS local:

Falha de aplicativo w3wp.exe, versão 7.0.6001.18000, carimbo de tempo 0x47919413, falha módulo ntdll.dll, versão 6.0.6001.18000, carimbo de tempo 0x4791a783, código de exceção 0xc0000374, falha compensada 0x000aada3, id processo 0x990, hora de início de aplicação 0x01c9b4133281d5d0.

Discussão: Eu escrevi um invólucro em torno de um .NET dll de um terceiro (LinkPointTransaction.dll de FirstData), e eu escrevi algumas outras montagens que a referência que wrapper. Como o código está sendo executado, uma chamada para o LinkPointTransaction.LinkPointTxn.Send() de terceiros envia a transação com sucesso para FirstData através da internet, mas meu aplicativo falhar em algum lugar w3wp.exe durante essa chamada, antes de atingir a próxima linha. Não lançar uma exceção gerenciado que eu posso ver; ele simplesmente trava. Funciona bem em todos os lugares na minha máquina, exceto no IIS7.

Estou executando 64 bits Vista Home Premium (IIS7), mas eu habilitado 32bit aplicativos no IIS, criou um AppPool separada apenas para este serviço web, e obrigaram todos os meus assembléias para x86. Eu tentei executar o pool de aplicativos sob a minha conta de usuário com privilégios de administrador em vez de como o serviço de rede. UAC é desligado. Eu tentei Integrado e modos clássicos. Eu abri explicitamente a porta TCP / IP no meu firewall local que os usos LinkPointTransaction.dll para se comunicar com FirstData. Eu até ter fechado minha firewall off (atrás de um roteador).

Com qualquer uma destas soluções alternativas que eu listado, ele sempre trabalha em um aplicativo do Windows e também em um serviço web dentro do servidor de desenvolvimento VS, mas Nunca trabalha no servidor IIS local.

O AppPool para o site do IIS está no modo Classic. (Em resposta a Gidon)

Foi útil?

Solução

Eu não acho que isso é uma questão de programação mais, então eu sou 'responder' it.

Usando o WinDbg, eu rastrearam a dll fornecido pelo fornecedor. Quando o aplicativo trava, parece que um problema com a forma como a dll está-alocação de memória. Os shows da pilha de chamadas uma operação livre de memória na DLL, em seguida, uma operação de "pilha livre" no kernel, em seguida, um "amontoado livre" operação em ntdll, e uma subseqüente "fracasso relatório montão" (e, em seguida, RtlReportCriticalFailure) que as lágrimas para baixo da coisa toda.

Eu ainda não entendo por que ela funciona em um Windows Forms aplicativo e no IIS 6, mas não trabalho no IIS 7. No entanto, este tornou-se mais de uma questão plataforma do que uma pergunta 'programação'. Além disso, é provavelmente a responsabilidade do fornecedor para corrigi-lo, em vez de mina para trabalhar em torno dele.

Atualizar : Dentro de dois dias de apresentação do bilhete de suporte técnico com o fornecedor, eles forneceram um conjunto atualizado das DLLs de integração que usam um objeto COM que você se registrar com regsvr32, e funciona no IIS7 64-bit se você registrá-lo no diretório WOW64. SIM PARA FIRST DATA SUPORTE TÉCNICO!

Outras dicas

Eu perguntei First Data sobre as DLLs e ser capaz de executá-lo em IIS7 / .NET 4 / Win 2008 64-bit. Esta foi sua resposta:

Obrigado por sua pergunta recente sobre First Data global Gateway. A API Webservice é a nossa solução atual para 64 máquinas bit em execução no IIS 7, como nenhum dos arquivos DLL (Linkpointtransaction.dll, LPICOM_6_.dll) será atualizado para trabalho com o servidor de 64 bits. Webservice API vai precisar para instalar o certificado de cliente e enviar a transação através de solicitação SOAP. Informações adicionais sobre o Webservice API é encontrado em http : //www.firstdata.com/downloads/marketing-merchant/FDGG-Web-Service-API-v4.0.pdf .

Se você precisar de mais esclarecimentos ou dúvidas, entre em contato com o nosso serviço de apoio através do número de telefone abaixo. Informamos os suporte API Horários da recepção está 09h00 - 18:00 EST Seg-sex.

Isso deve ajudar outros à procura de informações semelhantes no futuro.

Como é o site configurado no IIS7? Se estiver em execução no modo integrado mudar para o modo Classic. Veja Alterações recentes para ASP.NET 2.0 aplicações em execução no modo integrado no IIS 7.0

Eu tive um problema muito semelhante, e depois de brincar com ele por dias, eu vim a perceber que, se eu executar o mesmo código repetidamente em MSTest, às vezes falha e trava completamente o processo de teste, outra vezes ele funciona bem.

A coisa realmente estranha é que isso acontece com mais freqüência quando a depuração de um MSTest, mas, se eu clicar dentro do método de teste, em seguida, na barra de botões principal clique "testes de depuração no contexto atual", em seguida, quase sempre falha. Se eu em vez executar o teste, clicando em "depuração" na janela "Test Results", então ele quase sempre passa corretamente.

Ele também quase sempre funciona corretamente, se eu não executar no modo de depuração, mas não ainda às vezes falham. Eu mesmo gona, tanto quanto copy / pastign exatamente o mesmo código entre 2 projectos diferentes em 2 diferentes instâncias VisualStudio 2010, e em um deles o código será executado adequadamente, e em outro ele irá falhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top