Опираясь на ответ Вадима, я обнаружил, что написанное им не совсем подходит для моей ситуации, поэтому я использовал это вместо:
Dim connectionSettings As New ConnectionStringSettings("mySQLite", ConnectionStringHelper.MyConnectionString)
Dim dummyVirtualPath As String = "/MyApp"
Dim virtualDirMap = New VirtualDirectoryMapping(Server.MapPath("~"), True)
Dim webConfigFileMap = New WebConfigurationFileMap()
webConfigFileMap.VirtualDirectories.Add(dummyVirtualPath, virtualDirMap)
Dim mappedConfigFile = WebConfigurationManager.OpenMappedWebConfiguration(webConfigFileMap, dummyVirtualPath)
Dim config As System.Configuration.Configuration = mappedConfigFile WebConfigurationManager.OpenWebConfiguration(Server.MapPath("~") & "/")
Dim csSection As ConnectionStringsSection = config.ConnectionStrings
If csSection.ConnectionStrings("mySQLite") IsNot Nothing AndAlso csSection.ConnectionStrings("mySQLite").ConnectionString <> connectionSettings.ConnectionString Then
csSection.ConnectionStrings("mySQLite").ConnectionString = connectionSettings.ConnectionString
config.Save()
ConfigurationManager.RefreshSection(csSection.SectionInformation.Name)
End If
В случае, если кто-то еще пробует то, что я пытаюсь, и находит это, целью моего решения было заставить SimpleMembershipProvider
, который наследуется от ExtendedMembershipProvider
, работать с SQLite. Для этого я создал таблицы вручную по этой ссылке: SimpleMembershipProvider в MVC4 , а затем использовал эту команду в моей Global.asax
подпрограмме Application_Start
файла:
WebSecurity.InitializeDatabaseConnection(ConnectionStringHelper.MyConnectionString, "System.Data.SQLite", "Users", "UserID", "Email", False)
Что, оказывается, не требовало от меня переписывания файла web.config вообще. (Мне также пришлось внести много изменений в web.config, но это еще больше выходит за рамки этого вопроса.)