replaceメソッドを使用してパスワードを変更する

私はapp.configのパスワードを置き換えるために次のコードを使用しています。それは正常に置き換えられますが、メモリ内の設定ファイルをリロードしないので、データセットは間違ったパスワードのエラーを返します。 助けてください

 Dim vrTextFind As String = "Password"
    Dim vrTextReplaceWith As String = "PWD"
    Dim path As String = "D:\VS2008\EncTest\EncTest\bin\Debug\enctest.exe.config"
    Dim readText As String = File.ReadAllText(path)
    TextBox1.Text = readText
    'Find
    Dim idx As Integer = 0
    idx = TextBox1.Text.IndexOf(vrTextFind, idx)
    If idx = -1 Then
        MessageBox.Show(vrTextFind & " is not in Textbox1")
    Else
        TextBox1.SelectionStart = idx
        TextBox1.SelectionLength = vrTextFind.Length
    End If
    'Replace
    If TextBox1.Text.Contains(TextBox1.Text) Then
        TextBox1.Text = TextBox1.Text.Replace(vrTextFind, vrTextReplaceWith)
    Else
        MessageBox.Show(TextBox1.Text & " is not in Textbox3")
    End If
    '''''
    'Write all back
    File.WriteAllText(path, TextBox1.Text)
    'Refreshes the connection string section
    ConfigurationManager.RefreshSection("connectionStrings")
1
あなたが使用しているパスワードは、接続文字列のパスワードですか?セクション接続文字列をリフレッシュするのはなぜですか? textbox1.textには接続文字列が含まれていますか?
追加された 著者 Harsh,

2 答え

Windowsアプリケーション app.config は、アプリケーションの起動時に一度だけ読み込まれます。変更する場合は、アプリを再起動する必要があります。

提案

app.config にパスワードを保存する代わりに、他のファイル(設定ファイルなど)に保存します。実行時に変更して読み込むことができます。 設定の場合は、 MSDN をクリックします。 User-Scope の設定を選択します。

これがあなたを助けることを願っています

1
追加された
ありがとうございますが、ConfigurationManager.RefreshSection( "connectionStrings")はどういう意味ですか?これをもう一度読むことができますか?
追加された 著者 Furqan Sehgal,
コンソールアプリケーションで試してみましたが、接続文字列を更新しませんでした。しかし、ConfigurationManager.RefreshSectionの+1。
追加された 著者 Amar Palsapure,

File.WriteallTextを使用する代わりに、次のコードを使用してapp.configに書き込みます。

config.AppSettings.Settings.Item("ConnectionString").Value = TextBox1.Text
config.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("AppSettings")

次に、app.configから接続文字列値を再度ロードします。

Dim config As System.Configuration.Configuration
Dim fileMap As New ExeConfigurationFileMap()

fileMap.ExeConfigFilename = "Path of app.config"
config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None)

'   Sets values to config file.
If config.HasFile() Then

    strConnString = config.AppSettings.Settings.Item("ConnectionString").Value

End If
0
追加された
接続文字列値を再ロードするにはどうすればよいですか? ConfigurationManager.RefreshSection( "AppSettings")はそれを行いますか?
追加された 著者 Furqan Sehgal,
私の更新された答えを見てください。 app.configから値を取得し、変数に入れて使用してください。
追加された 著者 Harsh,