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
делает это автоматически. Я только что проверил это, и это работает следующим образом:
- Создайте новый веб-проект.
- Установите пакет ELMAH NuGet.
- Установите пакет NuGet для System.Data.SQLite.
- Добавьте следующее к
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>
- Нажмите F5 и перейдите к
/elmah.axd
,
Я сделал вышеупомянутые шаги, а также вызвал исключение в одном из моих контроллеров и запросил этот маршрут. Error.db
Файл успешно создан, и в журнал записана ошибка.
Если у вас уже есть файл с именем Error.db
в App_Data
попробуйте удалить это и повторите попытку.