Ocasional “Não foi possível carregar o arquivo ou a montagem” no WebService asmx no IIS e no DFS

1

Temos um pequeno serviço web ASMX hospedado em duas caixas idênticas do Windows Server 2003. O diretório virtual para os serviços da Web é carregado em um compartilhamento DFS, os dois servidores apontam para o mesmo compartilhamento. Temos um balanceador de carga entre a Internet e os dois servidores da Web.

Em um intervalo aparentemente aleatório (agora, cerca de duas vezes por semana) quando um usuário tenta acessar um método no serviço da Web, o IIS retorna o erro: "Não foi possível carregar o arquivo ou o assembly" para um dos conjuntos usados no chamada de método e continuará informando cada vez que o método for chamado até que o pool de aplicativos seja reciclado.

Não encontramos nenhum padrão distinguível para o problema. Isso é o que eu sei:

  • a montagem ausente varia (mas é sempre uma montagem caseira)
  • o método de serviço da Web que falha varia
  • não há padrão perceptível nos horários ou intervalos em que o problema aparece
  • não há usuários administradores acessando os servidores quando o problema aparece
  • o método com falha funcionará corretamente em um servidor e falhará no outro, mesmo que ambos apontem para a mesma pasta bin
  • o problema sempre pode ser corrigido reciclando o pool de aplicativos e não fazendo outras alterações

Eu habilitei o Log do Binder de Montagem e sei que o fichário está procurando no local correto para o arquivo.

Nossas montagens são compiladas para .Net 3.5.

    
por Jesse McDowell 09.06.2009 / 02:28

1 resposta

1

Tivemos um problema semelhante.

Nunca identificamos oficialmente o que estava acontecendo, mas reduzimos o problema ao nível de representação no web.config e o acesso do usuário à pasta que hospeda o arquivo de montagem.

Descobrimos que, às vezes, o processo de trabalho do IIS tentava carregar o assembly como a pessoa que acessava a solicitação da web. Pudemos ver que o thread que estava tentando carregar o assembly estava atualmente representando um usuário fazendo uma solicitação para uma das páginas do asp.net.

De qualquer forma, contornamos o problema concedendo acesso a usuários autenticados no domínio. Espero que você possa encontrar uma solução melhor.

    
por 09.06.2009 / 03:11

Tags