asp.net изменить значение элемента web.config? - PullRequest
0 голосов
/ 17 ноября 2010

я пытаюсь заставить поставщика ролей работать в нескольких средах и бить стену ( текст ссылки )

Я должен иметь возможность динамически устанавливать свойство connectionString элемента web.congig наapp_onstart для правильной строки соединения с БД, чтобы она заработала ...

Может кто-нибудь показать мне, как динамически изменять элементы в файле web.config?я угадываю отражение ...

<roleManager enabled="true" defaultProvider="SqlRoleManager">
    <providers>
        <clear/>
        <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="ISConnectionString_prod" applicationName="IS"/>
    </providers>
</roleManager>

я хочу настроить значение connectionStringName в приведенном фрагменте

спасибо

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

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

Мы используем это для установки строк подключения, настроек конфигурации провайдера платежей (режим песочницы, имя пользователя и т. Д.) И нескольких других вещей, например, как обрабатываются исключения.

Если вы не публикуете, вы можете подключить эти преобразования прямо к движку сборки, отредактировав файл проекта.

Это делает его невероятно простым в обслуживании (у вас есть web.config и web.Live.config, который содержит преобразования). Это также делает весь процесс намного менее подверженным ошибкам

например:

web.config

  <connectionStrings>
    <clear />
    <add name="OurConnectionString" connectionString="Data Source=DevDbHostname;Initial Catalog=DevDb;user id=Username;password=Password;MultipleActiveResultSets=True" />
  </connectionStrings>

web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="OurConnectionString"
      connectionString="Data Source=LiveDbHostname;Initial Catalog=LiveDb;user id=Username;password=Password;MultipleActiveResultSets=True"
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration>
0 голосов
/ 17 ноября 2010

Пока разрешения позволяют (вам придется их менять), вы можете обращаться с файлом web.config так же, как и с любым другим XML-файлом. Зная это, вы можете просто использовать XDocument и вставлять новый XElement там, где вам это нужно. Но будьте очень осторожны и сохраните несколько резервных копий!

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