Problema
Ao tentar instalar o Latromi Server, em um novo computador, foi observado o seguinte erro:
Transcrição do erro:
Não foi possível carregar os sites do host. O servidor não conseguiu processar a solicitação devido a um erro interno. Para obter mais informações sobre o erro, ative IncludeExceptionDetailInFaults (a partir da classe ServiceBehaviorAttribute ou do comportamento de configuração ) no servidor para enviar as informações de exceção de volta para o cliente ou ative o rastreamento de acordo com a documentação do Microsoft .NET Framework SDK e examine os logs de rastreamento do servidor.
Diagnóstico
Arquivos de Log
Nos arquivos de log do Latromi Installation Service, consta as seguintes informações:
Data/Hora Tipo Origem Categoria ID Tempo Mensagem
===========================================================================================================================================================================================================================================
2025-02-10 22:20:29 Info LatromiInstSVC -- -- -- Programa iniciado em 'C:\Program Files (x86)\LATROMI\Installation Service\LatromiInstSVC.exe'.
2025-02-10 22:20:29 Debug LatromiInstSVC -- -- -- Interpretando linha de comando:
2025-02-10 22:20:29 Debug LatromiInstSVC -- -- -- Chave de registro criada: HKEY_LOCAL_MACHINE\SOFTWARE\LATROMI\Path Mapping\Folders
2025-02-10 22:20:29 Debug LatromiInstSVC -- -- -- Valor de registro criado: Installation Service=C:\Program Files (x86)\LATROMI\Installation Service
2025-02-10 22:20:29 Info LatromiInstSVC -- -- -- Serviço 'LatromiInstSVC': Iniciando... [Thread 4]
2025-02-10 22:20:29 Info LatromiInstSVC -- -- -- Hospedando o serviço 'AppUpdater' em net.tcp://localhost:57249/LatromiInstallSVC/AppUpdater/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'AppUninstaller' em net.tcp://localhost:57249/LatromiInstallSVC/AppUninstaller/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'AppInstaller' em net.tcp://localhost:57249/LatromiInstallSVC/AppInstaller/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'InstallerCommons' em net.tcp://localhost:57249/LatromiInstallSVC/InstallerCommons/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'WebServerManager' em net.tcp://localhost:57249/LatromiInstallSVC/WebServerManager/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'DataBaseManager' em net.tcp://localhost:57249/LatromiInstallSVC/DataBaseManager/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Hospedando o serviço 'BackgroundUpdater' em net.tcp://localhost:57249/LatromiInstallSVC/BackgroundUpdater/
2025-02-10 22:20:30 Info LatromiInstSVC -- -- -- Serviço 'LatromiInstSVC': Iniciado.
2025-02-10 22:20:40 Info LatromiInstSVC -- -- -- Iniciando atualizações automáticas... [Thread 5]
2025-02-10 22:20:40 Info LatromiAutoUpdate -- -- -- Serviço de atualização automática iniciado.
2025-02-10 22:20:40 Info LatromiAutoUpdate -- -- -- Serviço de exclusão de versões anteriores iniciado.
2025-02-10 22:20:40 Debug LatromiAutoUpdate -- -- -- Os parâmetro foram salvos no registro do Windows.
2025-02-10 22:20:40 Error LatromiAutoUpdate -- -- -- System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto. em LATROMI.Install.AutoUpdateSettings.Load() em LATROMI.AutoUpdate.AutoUpdateService.CheckDefaultUpdates() em LATROMI.AutoUpdate.AutoUpdateService.StartUpdate() [System.NullReferenceException] Message: Referência de objeto não definida para uma instância de um objeto. Source: LATROMI.AutoUpdate
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
em LATROMI.Install.AutoUpdateSettings.Load()
em LATROMI.AutoUpdate.AutoUpdateService.CheckDefaultUpdates()
em LATROMI.AutoUpdate.AutoUpdateService.StartUpdate()
em LATROMI.AutoUpdate.AutoUpdateService.StartUpdate()
em LATROMI.AutoUpdate.AutoUpdateService.Start()
em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
em System.Threading.ThreadHelper.ThreadStart()
2025-02-10 22:20:40 Info LatromiInstSVC -- -- -- Procurando pastas que podem ser excluídas...
2025-02-10 22:20:40 Info LatromiInstSVC -- -- -- Iniciando exclusão de versões anteriores.
Nenhuma pasta encontrada.
2025-02-10 22:20:40 Info LatromiInstSVC -- -- -- Exclusão de versões anteriores concluída.
Detalhes Internos do Erro
Conforme sugerido na mensagem de erro inicial, ao habilitar o parâmetro includeExceptionDetailInFaults no arquivo LatromiInstSVC.exe.config
, a verdadeira mensagem de erro é apresentada:
Detalhes do erro no arquivo de Log da pasta C:\ProgramData\LATROMI\LatromiServerSetup\Log
:
2025-02-12 00:20:21 Info LatromiServerSetup -- -- -- Programa iniciado em 'C:\Users\Dan\Downloads\latromi-server-setup.exe'.
2025-02-12 00:20:21 Debug LatromiServerSetup -- -- -- Interpretando linha de comando:
2025-02-12 00:20:24 Error LatromiServerSetup -- -- -- System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Falha na recuperação de fábrica de classes COM do componente com CLSID {2B72133B-3F5B-4602-8952-803546CE3344} devido ao seguinte erro: 80040154 Classe não registrada (Exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). (O Detalhe da Falha é igual a ExceptionDetail, provavelmente criado por IncludeExceptionDetailInFaults=true, cujo valor é: System.Runtime.InteropServices.COMException: Falha na recuperação de fábrica de classes COM do componente com CLSID {2B72133B-3F5B-4602-8952-803546CE3344} devido ao seguinte erro: 80040154 Classe não registrada (Exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). em System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) em System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) em System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj) em System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) em System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) ...). [System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]] Message: Falha na recuperação de fábrica de classes COM do componente com CLSID {2B72133B-3F5B-4602-8952-803546CE3344} devido ao seguinte erro: 80040154 Classe não registrada (Exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). Source: mscorlib
System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Falha na recuperação de fábrica de classes COM do componente com CLSID {2B72133B-3F5B-4602-8952-803546CE3344} devido ao seguinte erro: 80040154 Classe não registrada (Exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). (O Detalhe da Falha é igual a ExceptionDetail, provavelmente criado por IncludeExceptionDetailInFaults=true, cujo valor é:
System.Runtime.InteropServices.COMException: Falha na recuperação de fábrica de classes COM do componente com CLSID {2B72133B-3F5B-4602-8952-803546CE3344} devido ao seguinte erro: 80040154 Classe não registrada (Exceção de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
em System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
em System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
em System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
em System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
em System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
...).
em LATROMI.SetupUI.WinForms.InstallerSettingsDialog.LoadWebSites()
em LATROMI.SetupUI.WinForms.InstallerSettingsDialog.SetupDialog()
em LATROMI.SetupUI.WinForms.InstallerSettingsDialog.this_Shown(Object sender, EventArgs e)
em System.Windows.Forms.Form.OnShown(EventArgs e)
em System.Windows.Forms.Form.CallShownEvent()
em System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
em System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
em System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
em System.Windows.Forms.Control.InvokeMarshaledCallbacks()
em System.Windows.Forms.Control.WndProc(Message& m)
em System.Windows.Forms.ScrollableControl.WndProc(Message& m)
em System.Windows.Forms.ContainerControl.WndProc(Message& m)
em System.Windows.Forms.Form.WndProc(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
em System.Windows.Forms.Application.RunDialog(Form form)
em System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
em System.Windows.Forms.Form.ShowDialog()
em LATROMI.SetupUI.Facade.StartMultiInstaller(String setupCopyPath, Action`1 completeAction)
em LATROMI.ServerSetup.Program.Install()
em LATROMI.ServerSetup.Program.Main(String[] args)
Consultando a classe {2B72133B-3F5B-4602-8952-803546CE3344}
pwlo PowerShell em 2 computadores diferentes (onde o serviço funciona sem erros), o resultado é este:
Get-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\CLSID\{2B72133B-3F5B-4602-8952-803546CE3344}"
(default) : Microsoft.ApplicationHost.WritableAdminManager
AppID : {9fa5c497-f46d-447f-8011-05d03d7d7ddc}
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_CLASSES_ROOT\CLSID\{2B72133B-3F5B-4602-8952-803546CE3344}
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CLASSES_ROOT\CLSID
PSChildName : {2B72133B-3F5B-4602-8952-803546CE3344}
PSProvider : Microsoft.PowerShell.Core\Registry
Informações do Ambiente
O computador onde o erro ocorreu, tinha as seguintes características:
- Windows 10 Pro, com todas as atualizações
- .NET 4.8 instalado
- Sem IIS Instalado
Solução
A solução exige correção no Latromi. É necessário encontrar a origem do erro (método LATROMI.Install.AutoUpdateSettings.Load()
) e aplicar correção.