Diferente do ASP “comum”, o ASP.NET Core nos possibilita diversas novas funções, dentre elas o ASP.NET Core Logs, que são os logs de erro, para a identificação de erros relacionados a execução da sua aplicação ASP.NET core. Sobre o uso de ASP.NET Core em nossa estrutura, clique aqui.
Uma aplicação ASP.NET Core é caracterizada por utilizar uma linha conforme abaixo no arquivo de configuração da sua aplicação, web.config:
<pre>
<aspNetCore processPath="dotnet"
arguments=".\nome-projeto.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
</pre>
Como ativar o ASP.NET Core Logs
Neste conjunto de passos é explicado como é feita a ativação dos logs:
1 – Crie uma pasta chamada logs no mesmo nível do web.config;
2 – Alterar o campo “stdoutLogEnabled” de “false” para “true” no arquivo web.config;
3 – Caso não exista essa informação, adicione mais código a este campo de modo que fique da seguinte forma:
<pre>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="debugFile" value=".\logs\aspnetcore-debug.log" />
<handlerSetting name="debugLevel" value="FILE,TRACE" />
</handlerSettings>
</aspNetCore>
</pre>
4 – Após isto, quando a aplicação for acessada serão criados arquivos dentro do diretório de log com o prefixo “stdout“.
Uma vez que se possui os logs é possível analisar de forma detalhada as causas para o erro que esteja ocorrendo na aplicação.
Exemplos de erros comuns que podem ocorrer:
1) Failed to determine the https port for redirect.
O erro em questão no log fica desta forma:
warn: Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository[50] Using an in-memory repository. Keys will not be persisted to storage.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[59] Neither user profile nor HKLM registry available. Using an ephemeral key repository. Protected data will be unavailable when application exits.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35] No XML encryptor configured. Key {b899dba6-409b-4aba-ad7f-9f6c1554d98f} may be persisted to storage in unencrypted form.
Hosting environment: Production
Content root path: d:\web\localuser\horticon\www\api
Now listening on: http://127.0.0.1:27066
Application started. Press Ctrl+C to shut down.
warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
Failed to determine the https port for redirect.
Application is shutting down…
Este erro ocorre devido o domínio não possuir o HTTPS ativo. A indicação é ativar o Let’s Encrypt, e uma vez que ele esteja funcional, testar novamente e acompanhar o log de erro, pois pode ser gerado um erro novo.
2) Could not load file or assembly.
O erro em questão no log fica desta forma:
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly ‘Microsoft.AspNetCore, Version=2.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60’.
The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at API.Program.CreateWebHostBuilder(String[] args) at API.Program.Main(String[] args) in C:\Users\smunari\Source\Workspaces\horticon-backend\Horticon\API\Program.cs:line 17
O erro acima pode ocorrer por dois motivos, o assembly não está no FTP no diretório BIN, ou até mesmo como no caso acima, ele está referenciando uma DLL local (C:\Users…) ao invés de utilizar os arquivos no servidor (D:\web\localuser\dominio\)
3) Até mesmo comandos SQL podem ser retornados pelo ASP.NET Core de forma detalhada, como o caso abaixo:
fail: Microsoft.EntityFrameworkCore.Database.Command[20102] Failed executing DbCommand (6ms) [Parameters=[@p2=’?’ (Size = 127), @p3=’?’ (Size = 8000)], CommandType=’Text’, CommandTimeout=’30’] DELETE FROM ‘AspNetUsers’ WHERE ‘Id’ = @p2 AND ‘ConcurrencyStamp’ = @p3; SELECT ROW_COUNT(); MySql.Data.MySqlClient.MySqlException (0x80004005): Cannot delete or update a parent row: a foreign key constraint fails (‘bahiavale03′.’usuario’, CONSTRAINT ‘FK_usuario_AspNetUsers’ FOREIGN KEY (‘cod_usuario’) REFERENCES ‘AspNetUsers’ (‘Id’) ON DELETE NO ACTION ON UPDATE NO ACTION) —> MySql.Data.MySqlClient.MySqlException (0x80004005): Cannot delete or update a parent row: a foreign key constraint fails (‘bahiavale03′.’usuario’, CONSTRAINT ‘FK_usuario_AspNetUsers’ FOREIGN KEY (‘cod_usuario’) REFERENCES ‘AspNetUsers’ (‘Id’) ON DELETE NO ACTION ON UPDATE NO ACTION)
at MySqlConnector.Protocol.PayloadData.ThrowIfError() in C:\projects\mysqlconnector\src\MySqlConnector\Protocol\PayloadData.cs:line 19
at MySqlConnector.Core.ServerSession.TryAsyncContinuation(Task’1 task) in C:\projects\mysqlconnector\src\MySqlConnector\Core\ServerSession.cs:line 870
at System.Threading.Tasks.ContinuationResultTaskFromResultTask’2.InnerInvoke()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
Restando dúvidas ou precisando de ajuda, contate-nos via telefone ou chat e converse com nosso suporte. Tenha em mãos seu código de cliente e senha de atendimento para ser atendido com mais agilidade.