Pergunta

Eu não estou achando que isso seja fácil de configurar; ou há um passo em falta na configuração de instalação, não está funcionar correctamente, ou eu realmente não entendê-la de propósito. Há algo definitivamente errado aqui. O problema deve, obviamente, ser eu. Eu apenas não estou recebendo este ao trabalho. Aqui está o que eu fiz.

Criar um aplicativo mvc nova marca. Colocado o seguinte na página About.aspx.

<% Throw new Exception ( "blah"); %> Colocar conteúdo aqui.

Hit the page obter a tela amarela com a exceção.

Adicionar elmah.dll para o diretório bin.

Adicione aos configurationSections arquivo Web.config:

<sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>

Adicionar à seção httpHandlers o seguinte:

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

Adicionar à seção módulos:

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>

Adicionar à secção manipulador:

<add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>

Adicionar uma seção elmah:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

O que é curioso aqui é que a parte ".XmlFileErrorLog" dessa cadeia mostrar-se vermelho como um erro ReSharper indicando que "Não é possível símbolo resolve '.ctor'", que quando eu olhar para o elmah.dll no refletor mostra isso objeto para exigir quer uma "string" ou um "IDicationary" em qualquer um dos dois construtores públicos.

Estou executando o Windows Vista x64 com VS 2008. Set permissão no App_Data a todos, como Co_Owner.

http: // localhost: xxxx / elmah.axd página que surgem e não mostra erros . Quando eu bati minha página "Sobre" novamente eu ainda ver a tela amarela e elmah.axd ainda não mostra erros na pasta app_data.

I substituído os customerrors com e página associada criado:

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" />

Os shows de páginas personalizadas, mas elmah.axd ainda mostra "sem erros". App_data ainda está vazio!

Como fonte para começar esta configuração eu usei: code.google.com/p/elmah/wiki/MVC

Então, onde estou eu errei em?

~ - = Mike = - ~

Foi útil?

Solução

Verifique se ErrorLogModule está presente em ambos configuration/system.web/httpModules (utilizado se você estiver em Desenvolvimento Web Server) e configuration/system.webServer/modules (usado pelo IIS 7). Aqui está o fragmento de web.config do projeto, eu estou trabalhando atualmente em:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
        </httpModules>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="ErrorLog" />
            <remove name="ErrorMail" />
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
        </modules>
    </system.webServer>
</configuration>

Espero que isso ajude

Outras dicas

Tente remover esta seção:

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

Isto significa que Elmah está configurado para usar apenas o padrão de registro na memória. Este problema ajuda disparando porque você sabe que não é uma coisa de permissão de arquivo. Assim, uma vez que você tem que trabalhar com in-memory login então você pode configurá-lo para registrar em um arquivo xml.

Você também pode querer verificar para fora esta pergunta stackoverflow, Como chegar ELMAH para trabalhar com atributo ASP.NET MVC [HandleError]? , que foi respondida pelo próprio Atif Aziz.

HTHS, Charles

Eu instalei a partir elmah NuGet e elmah on XML log, não tem a funcionalidade esperada embora eu poderia acessar http://localhost/elmah.axd, mas não captura erro.

Eu dei permissão de gravação para os IIS_IUSERS conta na pasta App_Data e começou a trabalhar para HTTP 404 erros e os erros que estão fora da infra-estrutura MVC. Mas não exceções dentro do MVC log. A solução foi instalar elmah.mvc pacote do NuGet e passou a capturar todas as exceções.

Se a sua configuração é OK, em seguida, basta instalar o pacote elmah.mvc de NuGet e deve começar a armazenar os logs também no interior MVC, não apenas HTTP 404.

O problema é esta linha

  <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">

Substitua-o por

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top