Я разрабатываю веб-приложение asp.net и использую членство в ASP.NET. Приложение использует схему членства и все необходимые объекты в основной базе данных приложения.
Однако во время разработки мне приходится переключаться на разные базы данных для разных сценариев разработки и тестирования. Для этого у меня есть файл раздела с строками внешних подключений, а также раздел с внешними настройками приложения, которые позволяют мне не изменять основной файл web.config, а легко переключать БД, изменяя настройки только в разделе настроек приложения.
Мои файлы, как показано ниже:
<connectionStrings configSource="connections.config">
</connectionStrings>
<appSettings file="local.config">
....
ConnectionStrings выглядит как обычно:
<connectionStrings>
<add name="MyDB1" connectionString="..." ... />
<add name="MyDB2" connectionString="..." ... />
....
</connectionStrings>
И local.config как показано ниже
<appSettings>
<add key="ConnectionString" value="MyDB2" />
Мой код учитывает использование этой строки подключения
Но настройки членства в web.config содержат имя строки подключения непосредственно в настройке, например
<add name="MembershipProvider" connectionStringName="MyDB2" ...>
....
<add name="RoleProvider" connectionStringName="MyDB2" ...>
Из-за этого каждый раз, когда мне приходится редактировать их, чтобы использовать новую базу данных.
Есть ли способ настроить поставщика членства, чтобы использовать настройку приложения, чтобы выбрать соединение БД для членства БД? Или «перенаправить» его, чтобы прочитать настройки соединения откуда-то еще? Или, по крайней мере, иметь это во внешнем файле (например, local.config)
Может быть, это какой-то простой способ обернуть провайдера членства asp.net intio в моего собственного провайдера, который будет просто читать строку подключения, откуда я хочу, и передавать ее исходному провайдеру членства, а затем просто делегировать всю функциональность членства членству asp.net провайдер.