.NET Console Application configSections - PullRequest
       32

.NET Console Application configSections

0 голосов
/ 30 августа 2011

У меня есть общая библиотека классов, которая используется веб-приложением asp.net и консольным приложением.

В файле web.config моего веб-приложения в разделе configSections есть группа sectionGroup,и затем соответствующие настройки.

<configSections>
    <sectionGroup name="StockLocator">
          <section name="AppSettings" type="StockLocator.ConfigSettings.AppConfig, StockLocator"/>
    </sectionGroup>
</configSections>

<StockLocator>
    <AppSettings>
        <Settings...... />
    </AppSettings>
</StockLocator>

Все работает, когда я читаю эти настройки в веб-приложении.Однако, когда я добавляю это в файл App.config моего консольного приложения, он не может прочитать эти настройки.Обычно, когда я пытаюсь что-то прочитать из файла App.config, я просто получаю сообщение об ошибке "Object reference not set to an instance of an object."

Не очень полезно.

Кажется, что этот раздел просто не читается изфайл app.config, который заставляет меня думать, что вы не можете добавить configSections в файл app.config?Или есть другой способ отладки, чтобы получить лучшее сообщение об ошибке?

Я читаю из configSections, используя код

<Serializable()> _
Public Class AppConfig
    Inherits ConfigurationSection

    ''' <summary>
    ''' Initialises and gets AppConfig SiteSettings
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function getConfig() As AppConfig
        Return CType(ConfigurationManager.GetSection("StockLocator/AppSettings"), AppConfig)
    End Function

    <ConfigurationProperty("Settings")> _
    Public Property Settings() As SettingsElement
        Get
            Return CType(Me("Settings"), SettingsElement)
        End Get
        Set(ByVal value As SettingsElement)
            Me("Settings") = value
        End Set
    End Property

    Public Class SettingsElement
        Inherits ConfigurationElement

        <ConfigurationProperty("SqlConnName")> _
        Public Property SqlConnName() As String
            Get
                Return CType(Me("SqlConnName"), String)
            End Get
            Set(ByVal value As String)
                Me("SqlConnName") = value
            End Set
        End Property

    End Class

End Class

Stack Trace:

в StockLocator.Model.StockLocatorService.MatchStock (магазин StockLocator_Store) в C: \ projects \ StockLocator \ StockLocator \ Model \ StockLocator.vb: строка 421

1 Ответ

2 голосов
/ 30 августа 2011

Если у вас есть другие appSettings в вашем App.config, их относительный порядок имеет значение.Раздел configSections должен находиться перед appSettings.Подробнее о этой теме MSDN

...