2013-05-02 17 views
15

Mam problem z ELMAH. Myślę, że jest to ciąg połączenia, ale nie mogę zrozumieć dlaczego. Wysyłając do mnie e-maile z błędami nie ma problemu, po prostu nie loguję się do sql. Jeśli problem dotyczy uprawnień, w jaki sposób wykryję błąd związany z pozwoleniem? Oto ELMAH odpowiedniej części mojego web.config:ELMAH Logowanie do serwera SQL Server

<configSections> 
<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" /> 
    <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah" /> 
</sectionGroup> 

<connectionStrings> 
<add name="ErrorLog" connectionString="Data Source=SQL1;Initial Catalog=ASBESTOS;User Id=MyUserName;Password=MyPassword" providerName="System.Data.SqlClient" />  

<system.web> 
    <httpModules> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
</system.web> 
<system.webServer> 
<modules runAllManagedModulesForAllRequests="true"> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 
</modules> 
<validation validateIntegratedModeConfiguration="false" /> 

<elmah> 
    <security allowRemoteAccess="1" /> 
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ErrorLog"/>  
    <errorMail from="sup[email protected]" to="[email protected]" subject="Asbestos Error Log" async="true"></errorMail> 
    </elmah> 
    <location path="elmah.axd" inheritInChildApplications="false"> 
    <system.web> 
     <authorization> 
     <allow roles="System" /> 
     <deny users="*" /> 
     </authorization> 
     <httpHandlers> 
     <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
     </httpHandlers> 
    </system.web> 
    <system.webServer> 
     <handlers> 
     <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" /> 
     </handlers> 
    </system.webServer> 
    </location> 

Odpowiedz

18

Twój config wygląda dobrze. Miałem ten sam problem, który nie był rejestrowany. Musiałem dodać uprawnienia do wykonywania na przechowywanych w Elmah procach z poświadczeniami, których używałem do połączenia się z bazą danych.

+2

Ugh. Jestem idiotą. W trakcie projektu przełączyłem się na Code First i wielokrotnie przebudowałem bazę danych, W TYM ELMAH, co oznaczało zmianę uprawnień do tabeli. Twoja wskazówka dotycząca uprawnień jest poprawna. Dzięki. –

+1

Bardzo pomocny. FYI Składnia do dodawania uprawnień do wykonywania: GRANT EXECUTE ON [StoredProcName] TO [nazwa użytkownika] – Bern