Elmah не создает таблицы SqlLite и хранимые процедуры

Я использую Elmah для регистрации необработанного исключения в ASP.NET MVC с использованием базы данных SqlLite. Когда я настраиваю Elmah с базой данных SqlLite, используя ниже

<elmah>
<!--
    See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for 
    more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="false" />
<errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="Elmah" />
</elmah>

используя нижеприведенную строку подключения

<connectionStrings>
    <add name="Elmah" connectionString="data source=~/App_Data/Error.db" />
  </connectionStrings>

Это исключение

SQLiteException (0x1): SQL logic error
    no such table: Error]
       System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain) +1239
       System.Data.SQLite.SQLiteCommand.BuildNextCommand() +374
       System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index) +18
       System.Data.SQLite.SQLiteDataReader.NextResult() +309
       System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave) +266
       System.Data.`enter code here`SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) +45
       System.Data.SQLite.SQLiteCommand.ExecuteReader() +21
       Elmah.SQLiteErrorLog.GetErrors(Int32 pageIndex, Int32 pageSize, IList errorEntryList) +235
       Elmah.ErrorLogPage.OnLoad(EventArgs e) +336
       System.Web.UI.Control.LoadRecursive() +59
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678`

Кто-нибудь может сказать мне, где я не прав?

Как я могу настроить базу данных SqlLite с Elmah для регистрации?

1 ответ

Вам не нужно создавать базу данных или запускать скрипт вручную, так как SQLLiteErrorLog делает это автоматически. Я только что проверил это, и это работает следующим образом:

  1. Создайте новый веб-проект.
  2. Установите пакет ELMAH NuGet.
  3. Установите пакет NuGet для System.Data.SQLite.
  4. Добавьте следующее к web.config
<connectionStrings>
    <add name="Elmah" connectionString="data source=~/App_Data/Error.db" />
</connectionStrings>

...

<elmah>
    <security allowRemoteAccess="false" />
    <errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="Elmah" />
</elmah>
  1. Нажмите F5 и перейдите к /elmah.axd,

Я сделал вышеупомянутые шаги, а также вызвал исключение в одном из моих контроллеров и запросил этот маршрут. Error.db Файл успешно создан, и в журнал записана ошибка.

Если у вас уже есть файл с именем Error.db в App_Data попробуйте удалить это и повторите попытку.

Другие вопросы по тегам