Elmah questões de configuração básica / questões
-
12-09-2019 - |
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 = - ~
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">