Vadimの答えに基づいて、彼が書いたものが私の状況では正確に機能しないことがわかったので、代わりにこれを使用しました:
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 in MVC4、次にGlobal.asax
ファイルのApplication_Start
ルーチンでこのコマンドを使用しました:
WebSecurity.InitializeDatabaseConnection(ConnectionStringHelper.MyConnectionString, "System.Data.SQLite", "Users", "UserID", "Email", False)
実際に web.config ファイルを書き直す必要はまったくありませんでした。(私がしなければならなかった web.config の変更もたくさんありましたが、それはこの質問の範囲外です。)