如何让ELMAH登录MySQL?

时间:2016-02-23 11:45:34

标签: mysql asp.net-mvc elmah

我一直在寻找这个问题而且几乎没有任何答案。

以前,我们一直使用ELMAH登录Microsoft SQL Server中的表,但是我们正在改变后端以使用MySQL(具体是MariaDB)。

所以一切都很好,错误已经记录到SQL Server。我已经安装了ELMAH MySql包并更改了连接字符串以使用新的MySQL表。但是,抛出错误时,不会记录任何错误。我很困惑为什么会这样。

实际上几乎没有关于此的任何文档真的没有帮助。例如,您是否应该自己安装ELMAH.MySQL?还是需要使用我以前的ELMAH配置?

ELMAH webconfig:

  <connectionStrings>
    <!-- TODO: Replace the ****'s with the correct entries -->
    <add name="elmah-mysql" connectionString="server=web01;UserId=root;Password=Tr@nsf0rmers;database=elmah; CharSet=utf8;Persist Security Info=True" />
  </connectionStrings>

<elmah>
    <security allowRemoteAccess="0" />
  <errorLog type="Elmah.MySqlErrorLog, Elmah.MySql" connectionStringName="elmah-mysql" />
  </elmah>

<appSettings>
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="true" />
    <add key="elmah.mvc.requiresAuthentication" value="false" />
    <add key="elmah.mvc.IgnoreDefaultRoute" value="false" />
    <add key="elmah.mvc.allowedRoles" value="*" />
    <add key="elmah.mvc.allowedUsers" value="*" />
    <add key="elmah.mvc.route" value="elmah" />
    <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
  </appSettings>

<httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>

<modules>
      <remove name="FormsAuthentication" />
      <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" />
      <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
    </modules>

异常处理程序:

public class ElmahHandledErrorLoggerFilter : IExceptionFilter {
        public void OnException(ExceptionContext context) {
            // Log only handled exceptions, because all other will be caught by ELMAH anyway.
            if (context.ExceptionHandled)            
            ErrorSignal.FromCurrentContext().Raise(context.Exception);  
        }
    }

它命中了这段代码。

说真的,给出了什么?

1 个答案:

答案 0 :(得分:0)

好吧,我设法通过以下方式让它工作。我卸载了所有的ELMAH引用。重新安装它们,安装了MySQL ELMAH软件包,然后更改了连接字符串并且工作正常。就像那样。

请遵循以下指南:https://dillieodigital.wordpress.com/2011/03/30/elmah-a-quick-start-tutorial-and-guide/

转换为MySQL,而不是使用SQLite。

相关问题