applicationSettings и Web.config - PullRequest
       26

applicationSettings и Web.config

20 голосов
/ 25 мая 2010

У меня есть DLL, которая обеспечивает ведение журнала, которое я использую для проектов WebForms, и теперь хочу использовать ее в проекте ASP.Net MVC 2.

Некоторые аспекты этой DLL настроены в app.config:

<configuration>
    <configSections>
            <section name="Tools.Instrumentation.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />
        </sectionGroup>
    </configSections>

 <applicationSettings>
        <Tools.Instrumentation.Properties.Settings>
            <setting name="LogLevel" serializeAs="String">
                <value>DEBUG</value>
            </setting>
            <setting name="AppName" serializeAs="String">
                <value>MyApp</value>
            </setting>
            <setting name="Port" serializeAs="String">
                <!--value>33333</value-->
                <value>0</value>
            </setting>
        </Tools.Instrumentation.Properties.Settings>
    </configuration>    

Однако, когда я создаю похожую запись в Web.config, я получаю сообщение об ошибке:

Нераспознанный раздел конфигурации applicationSettings

Мой вопрос из двух частей:

  • Как мне заставить эту запись конфигурации работать в Web.config?
  • Где я могу прочитать о концептуальных различиях конфигурации WinForms и конфигурации ASP.Net?

Ответы [ 3 ]

54 голосов
/ 03 ноября 2010

В вашем конфигурационном файле просто отсутствует группа разделов applicationSettings:

<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="Tools.Instrumentation.Properties.Settings" 
                 type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                 requirePermission="false" />
    </sectionGroup>
</configSections>

Если вы добавите это, вы можете поместить раздел «Настройки» внутри тега, и ваша сборка должна читать его как обычно.

4 голосов
/ 26 июня 2013

Вот версия .NET 4 с отсутствующей конфигурацией:

<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="Tools.Instrumentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>

Обязательно обновите пространство имен значения атрибута <section> name, чтобы оно соответствовало вашему собственному.

3 голосов
/ 25 мая 2010

Обратите внимание на атрибут name раздела?

попробуйте удалить свой элемент из <applicationSettings> оболочки

   <Tools.Instrumentation.Properties.Settings>
        <setting name="LogLevel" serializeAs="String">
            <value>DEBUG</value>
        </setting>
        <setting name="AppName" serializeAs="String">
            <value>MyApp</value>
        </setting>
        <setting name="Port" serializeAs="String">
            <!--value>33333</value-->
            <value>0</value>
        </setting>
    </Tools.Instrumentation.Properties.Settings>

Теперь вы можете использовать раздел. Но у вас нет сгенерированного класса-обертки, вам нужно будет немного больше поработать, чтобы получить значения с помощью ConfigurationManager.

Что касается второй части вашего вопроса, то, с одной точки зрения, практически нет разницы в том, как файлы конфигурации обрабатываются веб-приложением по сравнению с приложениями форм.

Единственное существенное отличие, которое может иметь или не иметь отношение к делу, заключается в том, что файлы web.config могут отображаться иерархически, причем каждый последующий файл эффективно расширяет или изменяет родительскую конфигурацию, когда это разрешено. Но, на мой взгляд, это скорее поведенческая разница, чем функциональная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...