none
Custom Error MVC RRS feed

  • Pergunta

  • Galera bom dia,

    Estou implementando algumas páginas de erro na minha aplicação. 

    Estou utilizando o ELMAH para gerar o log e atribui minhas páginas de erro no atributo customErros do web.config. 

    Estava tudo funcionando tranquilamente, ate que me veio a ideia de adicionar uma Area para os erros, agora não funciona mais, as páginas não são encontradas. 

    <customErrors mode="On" defaultRedirect="~/Areas/AreaErro/ErrorPages/ErrorPage">
          <error statusCode="404" redirect="~/Areas/AreaErro/ErrorPages/PageNotFound" />
          <error statusCode="500" redirect="~/Areas/AreaErro/ErrorPages/ServerError" />
        </customErrors>

    O que estou fazendo errado? 

    Lembrando que o web.config é o principal do meu projeto. 

    E as páginas testadas foram a not found e a Error Page.

    Abraço.

    terça-feira, 27 de maio de 2014 13:46

Respostas

  • Bom minha sugestão é você criar uma controller de erros sem ser com áreas e testar o web.config, já nas áreas cria uma view e revisa as urls e tenta acessar via browser, pois já não sei o que pode ser, estou usando areas e está funcionando normal, minha sugestão é remover essa AreaErro e criar uma nova apenas com o nome "Erros" para ficar menos confuso, fazer as configurações conforme eu disse anteriormente.
    terça-feira, 27 de maio de 2014 15:03
  • Não falei que era algo errado. 

    O name space da controller estava errado :/.

    Problema resolvido.

    terça-feira, 27 de maio de 2014 18:33

Todas as Respostas

  • Remova os "Areas" do link no web.config

    <customErrors mode="On" defaultRedirect="~/AreaErro/ErrorPages/ErrorPage">
          <error statusCode="404" redirect="~/AreaErro/ErrorPages/PageNotFound" />
          <error statusCode="500" redirect="~/AreaErro/ErrorPages/ServerError" />
        </customErrors>

    terça-feira, 27 de maio de 2014 13:52
  • Remova os "Areas" do link no web.config

    <customErrors mode="On" defaultRedirect="~/AreaErro/ErrorPages/ErrorPage">
          <error statusCode="404" redirect="~/AreaErro/ErrorPages/PageNotFound" />
          <error statusCode="500" redirect="~/AreaErro/ErrorPages/ServerError" />
        </customErrors>

    Valeu Cesar, mas não resolveu. 

    terça-feira, 27 de maio de 2014 14:01
  • Dentro do seu global.asax tem essa linha   AreaRegistration.RegisterAllAreas();?

    No meu exemplo 

     public class AdministracaoAreaRegistration : AreaRegistration 
        {
            public override string AreaName 
            {
                get 
                {
                    return "Administracao";
                }
            }

            public override void RegisterArea(AreaRegistrationContext context) 
            {
                context.MapRoute(
                    "Administracao_default",
                    "Administracao/{controller}/{action}/{id}",
                    new {controller = "Home",  action = "Index", id = UrlParameter.Optional },
                    namespaces: new string[] { "Site.Areas.Administracao.Controllers" }
                );
            }


    

    terça-feira, 27 de maio de 2014 14:09
  • Sim: 

     protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                   .
                   .
                   .
             }
    
     public class AreaErroAreaRegistration : AreaRegistration 
        {
            public override string AreaName 
            {
                get 
                {
                    return "AreaErro";
                }
            }
    
            public override void RegisterArea(AreaRegistrationContext context) 
            {
                context.MapRoute(
                    "AreaErro_default",
                    "AreaErro/{controller}/{action}/{id}",
                    new { action = "Index", id = UrlParameter.Optional }
                );
            }
        }

    Do jeito que foi criada está.
    terça-feira, 27 de maio de 2014 14:20
  • coloca isso namespaces: new string[] { "Site.Areas.ArreaErro.Controllers" }, igual meu exemplo anterior, depois tenta acessar a url digitando no browser
    terça-feira, 27 de maio de 2014 14:25
  • Sem sucesso cara. 

    Eu so posso estar fazendo algo errado :/.

    context.MapRoute(
                    "AreaErro_default",
                    "AreaErro/{controller}/{action}/{id}",
                    new { action = "Index", id = UrlParameter.Optional },
                    namespaces: new string[] { "Site.Areas.ArreaErro.Controllers" }
                );


    terça-feira, 27 de maio de 2014 14:31
  • Na sua URL tem uma Area a mais, tem que ficar http://localhost:51302/AreaErros/ErrorPages/ErrorPage, tem que existir também a View lá
    terça-feira, 27 de maio de 2014 14:36
  • Testei do jeito que você falou. 

    Sem sucesso. Oh my god.

    terça-feira, 27 de maio de 2014 14:38
  • Na sua configuração "AreaErro/{controller}/{action}/{id}"  e no browser está como AreaErros, tenta esse link  "http://localhost:51302/AreaErro/ErrorPages/ErrorPage", certifique-se que a aplicação está rodando
    terça-feira, 27 de maio de 2014 14:45
  • Cesar, eu testei e nada, até comentei o código no web.config para testar e ele não encontra a página. 

    terça-feira, 27 de maio de 2014 14:50
  • Bom minha sugestão é você criar uma controller de erros sem ser com áreas e testar o web.config, já nas áreas cria uma view e revisa as urls e tenta acessar via browser, pois já não sei o que pode ser, estou usando areas e está funcionando normal, minha sugestão é remover essa AreaErro e criar uma nova apenas com o nome "Erros" para ficar menos confuso, fazer as configurações conforme eu disse anteriormente.
    terça-feira, 27 de maio de 2014 15:03
  • Sem a Area eu ja havia feito e funcinava perfeitamente. 

    Vou tentar recriar a Area para ver. 

    Vlw pela ajuda.

    terça-feira, 27 de maio de 2014 15:17
  • Não falei que era algo errado. 

    O name space da controller estava errado :/.

    Problema resolvido.

    terça-feira, 27 de maio de 2014 18:33