Olá, pessoal. Estou com um problema ao tentar atualizar uma aplicação WEB (ASP.NET) rodando no IIS 6.0 que utiliza componentes COM+ (VB 6.0). Estou utilizando a dll de interoperabilidade criada automaticamente pelo Visual Studio (2005) como interface entre o "managed code" e o "unmanaged code". Não sei se é preciso setar nothing para o objeto COM+ para que o GC possa limpá-lo, mas estou fazendo isso. Ex.:
Code Block
Dim objBusca As New OIPAtendimentosNg.GuiasTrocasNg
Dim
objDados As Object = objBusca.obtemDadosRelTroca()
objBusca =
Nothing
Um primeiro problema é que se esta DLL estiver somente no Serviço de Componentes do servidor (onde também está o web server) ao tentar instanciar um objeto o seguinte erro me aparece:
Retrieving the COM class factory for component with CLSID {089E3228-6555-4A98-A872-52D1760EB73A} failed due to the following error: 80040154
System.Runtime.InteropServices.COMException
Daí, tenho que registrá-la (regsvr32). Não é possível utilizar componentes do COM+ Services?
O segundo problema é que toda vez que faço um novo deploy da aplicação (Publish Web Site) e preciso atualizar os componentes COM+, tenho que reiniciar o servidor pois a DLL de negócio (referenciada no Visual Studio pela Interop.XXX) fica "bloqueada" como se algo ainda estivesse utilizando-a. Isso ocorre mesmo reiniciando o IIS. Está sendo um tormento. Algo está errado na forma como estou fazendo isso?