2013-05-02 76 views
15

我有一个ELMAH问题。我认为这是连接字符串,但不知道为什么。它通过电子邮件发送错误没有问题,只是没有将它们记录到sql中。如果问题是权限问题,我将如何捕获错误以向我显示权限问题?这里是我的web.config中的ELMAH相关章节:ELMAH在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="[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> 

回答

18

你的配置看起来不错。我没有记录日志时遇到了同样的问题。我必须使用我用来连接数据库的证书在Elmah存储过程中添加执行权限。

+2

呃。我是一个白痴。在部分项目中,我切换到了Code First,并重新构建了数据库,包括ELMAH表,这意味着对表的权限发生了变化。所以,关于权限的提示是正确的。谢谢。 – 2013-07-25 21:00:02

+1

非常有帮助。仅供参考添加执行权限的语法是:GRANT EXECUTE ON [StoredProcName] TO [UserName] – Bern 2017-06-28 12:33:47