Solucionar problemas de erros de serviço interno de HTTP 500
APLICA-SE A: SDK v4
A primeira etapa na solução de erros 500 é habilitar o Application Insights.
Para obter exemplos do AppInsights, confira o exemplo em C# de luis-with-appinsights e o exemplo em JS.
Observação
O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.
A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.
Confira telemetria de análise de conversa para obter informações sobre como adicionar o Application Insights a um bot existente.
Habilite o Application Insights para o ASP.NET
Para o suporte básico do Application Insights, confira como configurar o Application Insights para seu site do ASP.NET. O Bot Framework (começando com a v4.2) fornece um nível adicional do Application Insights Telemetry, mas ele não é necessário para diagnosticar erros HTTP 500.
Habilite o Application Insights para Node.js
Para o suporte básico do Application Insights, confira como monitorar serviços e aplicativos do Node.js com o Application Insights. O Bot Framework (começando com a v4.2) fornece um nível adicional do Application Insights Telemetry, mas ele não é necessário para diagnosticar erros HTTP 500.
Consultar exceções
O método mais fácil de analisar erros 500 do código de status HTTP começar pelas exceções.
As consultas a seguir informarão as exceções mais recentes:
exceptions
| order by timestamp desc
| project timestamp, operation_Id, appName
Na primeira consulta, selecione algumas das IDs de operação e procure por mais informações:
let my_operation_id = "d298f1385197fd438b520e617d58f4fb";
let union_all = () {
union
(traces | where operation_Id == my_operation_id),
(customEvents | where operation_Id == my_operation_id),
(requests | where operation_Id == my_operation_id),
(dependencies | where operation_Id == my_operation_id),
(exceptions | where operation_Id == my_operation_id)
};
union_all
| order by timestamp desc
Se você tiver apenas exceptions
, analise os detalhes e veja se eles correspondem às linhas em seu código. Se você só vir exceções provenientes do Conector de Canal (Microsoft.Bot.ChannelConnector
), então confira Sem eventos do Application Insights para garantir que o Application Insights esteja configurado corretamente e seu código esteja registrando eventos.
Sem eventos do Application Insights
Se você está recebendo erros 500 e não há nenhum outro evento no Application Insights do seu bot, verifique o seguinte:
Certifique-se de que o bot seja executado localmente
Primeiro, testar o bot localmente com o Bot Framework Emulator.
Certificar-se de que os arquivos de configuração estão sendo copiados (.NET)
Certifique-se de que seu arquivo appsettings.json
e qualquer outro arquivo de configuração sejam empacotados corretamente durante o processo de implantação.
Assemblies do aplicativo
Certifique-se de que os assemblies do Application Insights estão sendo empacotados corretamente durante o processo de implantação.
- Microsoft.ApplicationInsights
- Microsoft.ApplicationInsights.TraceListener
- Microsoft.AI.Web
- Microsoft.AI.WebServer
- Microsoft.AI.ServeTelemetryChannel
- Microsoft.AI.PerfCounterCollector
- Microsoft.AI.DependencyCollector
- Microsoft.AI.Agent.Intercept
Certifique-se de que seu arquivo appsettings.json
e qualquer outro arquivo de configuração sejam empacotados corretamente durante o processo de implantação.
appsettings.json
Verifique se a chave de instrumentação está definida no seu arquivo appsettings.json
.
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
},
"Console": {
"IncludeScopes": "true"
}
}
}
Verifique o arquivo de configuração
Verifique se há uma chave do Application Insights incluída em seu arquivo de configuração.
{
"ApplicationInsights": {
"type": "appInsights",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"resourceGroup": "my resource group",
"name": "my appinsights name",
"serviceName": "my service name",
"instrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"applicationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"apiKeys": {},
"id": ""
}
},
Verificar os logs
O ASP.NET e o Nó do bot emitirão os logs no nível do servidor que pode ser inspecionado.
Configurar um navegador para observar os logs
- Abra o bot no Portal do Azure.
- Abra a página Configurações do Serviço de Aplicativo / Todas as configurações do Serviço de Aplicativo para ver todas as configurações de serviço.
- Abra a página Monitoramento / Logs de diagnóstico para o serviço de aplicativo.
- Verifique se o Registro em log de aplicativo (sistema de arquivos) está habilitado. Certifique-se de clicar em Salvar se você alterar essa configuração.
- Alterne para a página Monitoramento / Fluxo de log.
Selecione Logs do servidor Web e verifique se você vê uma mensagem informando que você está conectado. A saída deve ter uma aparência semelhante à que se segue:
Connecting... 2018-11-14T17:24:51 Welcome, you are now connected to log-streaming service.
Mantenha essa janela aberta.
Configurar o navegador para reiniciar o serviço de bot
- Usando um navegador separado, abra seu bot no Portal do Azure.
- Abra a página Configurações do Serviço de Aplicativo / Todas as configurações do Serviço de Aplicativo para ver todas as configurações de serviço.
- Alterne para a página Visão geral para o serviço de aplicativo e clique em Reiniciar.
- Você será solicitado a confirmar se tem certeza; selecione Sim.
- Retorne para a primeira janela do navegador e observe os logs.
- Verifique se você está recebendo novos logs.
- Se não houver nenhuma atividade, reimplante seu bot.
- Em seguida, alterne para a página Logs de aplicativo e procure erros.