Uma das necessidades de um sistema é a maneira que fazemos o tratamento de erros, e com ASP NET MVC 2 esse tratamento fica ainda mas fácil. Na versão 2 do ASP NET MVC foi adicionado Filter Interceptor chamado HandleError, somente adicionando esse atributo em nosso controller, métodos já podemos tratar nossos erros.
Mas como configurar o HandleError?
A primeira coisa que devemos fazer é configurar o web.config, basta ativar a propriedade CustomErrors, e também já configuramos o erro 404, conforme abaixo:
[sourcecode language=”xml”]
<customErrors mode="On">
<error statusCode="404" redirect="NotFound" />
</customErrors>
[/sourcecode]
Agora vamos criar um classe que servirá como base para a criação dos nosso controllers, também ja estou gravando um LOG dos erros usando o LOG4NET, veja abaixo o código:
[sourcecode language=”csharp”]
public class BaseController : Controller
{
private static ILog log = LogManager.GetLogger("MrTaylor Log");
protected override void OnException(ExceptionContext filterContext)
{
log.Debug(filterContext.Exception);
base.OnException(filterContext);
}
}
[/sourcecode]
Em todos os outros controllers vamos herdar de BaseController e adicionar o atributo HandlerError, veja o exemplo abaixo:
[sourcecode language=”csharp”]
[HandleError]
public class PessoaController : BaseController
{
…..
}
[/sourcecode]
Quando ocorrer algum erro em nossa aplicação automaticamente será acionado o método OnException da nossa classe BaseController, a página que será chamada está em View -> Shared -> Error.aspx
[sourcecode language=”html”]
<h2>Desculpe, ocorreu um erro ao processar o pedido!</h2>
<div class="erro">
<b>Controller:</b><%= this.ViewData.Model.ControllerName %><br />
<b>Action:</b><%= this.ViewData.Model.ActionName %><br />
<b>Mensagem da exceção:</b> <%= this.ViewData.Model.Exception.Message %>
</div>
[/sourcecode]
Veja a página gerada abaixo:
Veja o LOG gravado no arquivo
Falei que era fácil!
Qualquer dúvida, opinião, reclamação mande seu comentário!
Um Abraço!
Boa Noite!
Voce tem como disponibilizar para download o codigo
do projeto que voce implementou os tratamentos
de erro acima.
Seu site é show,.
Abraço.
Valeu Anderson
Infelizmente para esse post eu não tenho o código fonte, porque implementei esse tratamento de erro em um sistema do cliente
Mas é bem tranquilo de implementar.. não tem segredo!
att,
Leandro Prado