2015-03-25 2 views
0

Я видел, что существует множество потоков, ссылающихся на эту проблему. Я прочитал их, и я не вижу ничего плохого в коде, который я написал.NLog - Формат строки инициализации не соответствует спецификации, начинающейся с индекса 0

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     internalLogLevel="info" 
     internalLogFile="c:\log.txt"> 
    <targets> 
     <target type="Database" 
       name="database" 
       connectionstring="NLogPriMIODbConnection"> 
      <commandText> 
       exec dbo.usp_InsertLogEntry @logLevel, @createDate, null, 
            @message, null, @exception, @stackTrace, @origin 
      </commandText> 
      <parameter name="@createDate" 
         layout="${longdate}" /> 
      <parameter name="@origin" 
         layout="${callsite}" /> 
      <parameter name="@logLevel" 
         layout="${level}" /> 
      <parameter name="@message" 
         layout="${message}" /> 
      <parameter name="@exception" 
         layout="${exception:format=Message,StackTrace}" /> 
      <parameter name="@stackTrace" 
         layout="${stacktrace}" /> 
     </target> 
    </targets> 

    <rules> 
     <logger name="*" 
       minlevel="Trace" 
       writeTo="database" /> 
    </rules> 
</nlog> 

Строка соединения является следующий http://www.connectionstrings.com/ стандартов для SQL 2012

<connectionStrings> 
    <add 
     name="NLogPriMIODbConnection" 
     connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Что, кажется, эта таинственная проблема, которую я не могу найти?

Благодаря

ответ

2

В вашей конфигурации NLog вы использовали connectionstring, который ожидает фактической строки (то есть. Сервер, имя пользователя, пароль и т.д.). Если вы хотите, чтобы он использовал именованную строку соединения из конфигурации вашего веб-приложения, вам нужно вместо этого использовать connectionstringname.

+0

Как я мог не заметить, что! благодаря –

0

вот как бы я выглядел, используя ваши значения, имея строку соединения в качестве вложенного узла для цели. Я уверен, что есть другие способы сделать это, но вот как работает моя текущая конфигурация, и она работает.

Или, если вы хотите, чтобы вытащить строку подключения из app.config (как сказано в других ответах) вы хотели бы использовать ConnectionStringName проп

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.mono2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  internalLogLevel="info" internalLogFile="c:\log.txt"> 
    <targets> 
    <target type="Database" name="database"> 
     <connectionStrings> 
     <add name="NLogPriMIODbConnection" connectionString="Server=.\SQLExpress;Database=local.XXX;User Id=sa;Password=XXX;" providerName="System.Data.SqlClient" /> 
     </connectionStrings> 
     <commandText> 
     exec dbo.usp_InsertLogEntry @logLevel, @createDate, null, @message, null, @exception, @stackTrace, @origin 
     </commandText> 
     <parameter name="@createDate" layout="${longdate}" /> 
     <parameter name="@origin" layout="${callsite}" /> 
     <parameter name="@logLevel" layout="${level}" /> 
     <parameter name="@message" layout="${message}" /> 
     <parameter name="@exception" layout="${exception:format=Message,StackTrace}" /> 
     <parameter name="@stackTrace" layout="${stacktrace}" /> 
    </target> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Trace" writeTo="database" /> 
    </rules> 
</nlog> 
Смежные вопросы

 Смежные вопросы