2013-05-13 17 views
8

Potrzebuję szyfrować/odszyfrować niestandardowe sekcje w pliku app.config, a także w pliku web.config. Czytałem, że aspnet_regiis może być użyty dla web.config, ale muszę to zrobić programowo.Szyfruj sekcję niestandardową w pliku app/web.config

Po otwarciu mappedExeConfiguration, określić odcinek następująco:

ConfigurationSection connStrings = config.AppSettings; 

szyfrowanie/deszyfrowanie sekcję AppSettings.

Jak określić nazwę niestandardowej sekcji? Kiedy wpisuję nazwę mojej sekcji niestandardowej za obiektem configurationSection, intelli-sense nie rozpoznaje go. (Rozpoznaje tylko kilka dobrze znanych sekcji)

P.S. W mojej funkcji muszę przyjąć nazwę sekcji niestandardowej jako parametr łańcuchowy.

Przykład:

np.

gdzie MyCustomTag jest sekcją wymagającą szyfrowania/odszyfrowywania.

Odpowiedz

2

Od CommandPromt VS 2010 wywołania polecenia do szyfrowania:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pef "connectionStrings" "YOUR_PROJECT_NAME" -prov "DataProtectionConfigurationProvider" 

Deszyfruj:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pdf "connectionStrings" "YOUR_PROJECT_NAME" 
+0

Muszę to zrobić programowo. Ponadto witryna wdrażania nie musi mieć aspnet_regiis. – Karan

+0

Działa to ze standardowej linii poleceń, a nie tylko z wiersza poleceń VS 2010. Najłatwiej było CD do katalogu głównego mojej witryny i użyć komend z pustymi ciągami dla YOUR_PROJECT_NAME. – user489998

0

do szyfrowania, użyj polecenia zamieszczonych przez HaGever na to odpowiedź.

This question ma przykładowy kod do odczytu plików app.config z kodu. Kod nie działa, ponieważ klucz szyfrowania nie został zainstalowany na komputerze używanym do deszyfrowania pliku app.config.

+0

Muszę to zrobić programowo. Ponadto witryna wdrażania nie musi mieć aspnet_regiis. – Karan

4

I to osiągnąć za pomocą kodu znalazłem w http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspx

bym wkleić mój kod, ale w zasadzie jest prawie identyczne z kodem na tej stronie, z wyjątkiem zmiany nazwy aplikacji.

Edycja: dla sekcji niestandardowej nie jestem pewien, ponieważ nie potrzebowałem jej używać, ale można zbadać, co obiekt konfiguracyjny daje w poniższym wierszu.

Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe"); 

Oto moja cała metoda UpdateKey(), którą teraz rozumiem, że zaadaptowałem trochę ze strony internetowej. Może to pomaga.

public static void UpdateKey(string key, string newValue) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(GetAppPath() + "MyAppName.exe"); 
    config.AppSettings.Settings[key].Value = newValue; 
    config.Save(); 
} 

Następnie po tym, jak został zapisany klucz (y), wzywam

EncryptAppSettings("appSettings"); 

i być może można dostosować wartość param tam odpowiadał też.

+0

Dzięki.Wygląda dobrze. – Karan

+0

Pytanie zaktualizowane. Jednak pokazuje tylko, jak zaszyfrować sekcję appSettings, a nie sekcję niestandardową. W moim przypadku chcę zaszyfrować niestandardowy tag w , np. <... data> Karan

+0

Zmieniono moją odpowiedź. –

Powiązane problemy