Eu tenho duas máquinas Server 2016 executando um aplicativo ASP clássico em um pool integrado x64 eConfiguração compartilhada.
Eu pensei que ambos os servidores estavam configurados de forma idêntica, no entantoum servidorrecebe um erro em:
Definir obj = Server.CreateObject("MSXml2.ServerXmlHttp.6.0")
Número de erro = 800401F3
SOMENTE na minha aplicação!
Se eu colocar essa linha em uma página ASP separada, rodando no mesmo site, ela completa normalmente (Err.Number=0)
Não encontrei nenhuma entrada no log de eventos.
O que eu tentei:
- Com e sem versão (parte .6.0)
- Permissões de registro
- Permissões de arquivo em msxml3.dll e msxml6.dll (System32 e SysWOW64)
- Cancelar/registrar novamente as mesmas DLLs
Espero sugestões sobre onde procurar/como solucionar isso.
Responder1
Se funcionar bem em outra página do mesmo site, mas não em outra página do mesmo aplicativo, isso deve estar relacionado às configurações do aplicativo. Comece com um web.config vazio e adicione configurações específicas do seu aplicativo quebrado.
Se funcionar bem em uma página básica do mesmo aplicativo, sua página é o problema.
Não tenho certeza do que dentro da configuração causaria a falha, mas é isso que eu tentaria.
Responder2
Isso não foi um problema com a criação de objetos, mas com um bug (ou mudança de comportamento) em Server.CreateObject() e algum código que manipulava várias versões de uma DLL COM diferente.
Havia um código que tratava de várias versões possíveis de uma DLL da seguinte maneira:
obj = Server.CreateObject("Version1.Object")
If Err.Number <> 0 Then
obj = Server.CreateObject("Version2.Object")
End If
No final, assumindo que um deles foi bem-sucedido, Err.Number = 0
No IIS 10.0 (Servidor 2016), um Server.CreateObject("Version2.Object") bem-sucedido deixou o valor anterior em Err.Number de Server.CreateObject("Version2.Object").
Novo Código:
obj = Server.CreateObject("Version1.Object")
If Err.Number <> 0 Then
Err.Clear
obj = Server.CreateObject("Version2.Object")
End If