2013-05-13 5 views
8

मुझे app.config के साथ-साथ web.config फ़ाइल में कस्टम अनुभागों को एन्क्रिप्ट/डिक्रिप्ट करने की आवश्यकता है। मैंने पढ़ा है कि web.config के लिए aspnet_regiis का उपयोग किया जा सकता है, लेकिन मुझे इसे प्रोग्रामिक रूप से करने की आवश्यकता है।ऐप/web.config फ़ाइल में एक कस्टम अनुभाग एन्क्रिप्ट करें

mappedExeConfiguration खोलने के बाद, मैं इस प्रकार एक अनुभाग निर्दिष्ट:

ConfigurationSection connStrings = config.AppSettings; 

एन्क्रिप्ट करने के लिए/appSettings अनुभाग डिक्रिप्ट।

मैं कस्टम सेक्शन का नाम कैसे निर्दिष्ट करूं? जब मैं कॉन्फ़िगरेशनसेक्शन ऑब्जेक्ट के बाद अपने कस्टम सेक्शन का नाम टाइप करता हूं, तो इंटेलि-अर्थ इसे पहचान नहीं पाता है। (यह केवल कुछ प्रसिद्ध वर्गों को पहचानता है)

पीएस मेरे फ़ंक्शन में, मुझे कस्टम अनुभाग नाम स्ट्रिंग पैरामीटर के रूप में लेने की आवश्यकता है।

उदाहरण:

उदा।

<Configuration> 
    <MyCustomTag> 
     <... data /> 
    </MyCustomTag> 
</Configuration> 

जहां MyCustomTag वह अनुभाग है जिसे मुझे एन्क्रिप्ट/डिक्रिप्ट करने की आवश्यकता है।

उत्तर

2

वी.एस. की CommandPromt से 2010 कॉल एन्क्रिप्ट के लिए एक कमांड:

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

डिक्रिप्ट:

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

मुझे इसे प्रोग्रामिक रूप से करने की आवश्यकता है। साथ ही, तैनाती साइट को aspnet_regiis नहीं होना चाहिए। – Karan

+0

यह मानक कमांड लाइन से काम करता है, न केवल वीएस 2010 कमांड प्रॉम्प्ट। मुझे अपनी साइट की जड़ में सीडी के लिए सबसे आसान लगता है और YOUR_PROJECT_NAME के ​​लिए रिक्त स्ट्रिंग वाले कमांड का उपयोग करें। – user489998

0

, एन्क्रिप्ट करने के लिए कमांड लाइन HaGever द्वारा पोस्ट की जवाब है में इस्तेमाल करते हैं।

This question कोड से app.config फ़ाइलों को पढ़ने के लिए कुछ उदाहरण कोड है। कोड काम नहीं कर रहा था क्योंकि app.config को डिक्रिप्ट करने के लिए उपयोग की जाने वाली मशीन पर एन्क्रिप्शन कुंजी स्थापित नहीं की गई थी।

+0

मुझे इसे प्रोग्रामिक रूप से करने की ज़रूरत है। साथ ही, तैनाती साइट को aspnet_regiis नहीं होना चाहिए। – Karan

4

मैं मैं http://www.a2zmenu.com/Blogs/CSharp/How-to-encrypt-configuration-file.aspx

पर पाया कोड का उपयोग कर रहा में अपने कोड पेस्ट चाहते हैं कर यह उपलब्धि हासिल है, लेकिन मूल रूप से यह है कि वेब पेज पर कोड के लिए काफी समान है आवेदन नामों को बदलने के लिए छोड़कर।

संपादित करें: एक कस्टम सेक्शन के लिए, मुझे यकीन नहीं है क्योंकि मुझे इसका उपयोग करने की आवश्यकता नहीं है, लेकिन आप यह पता लगा सकते हैं कि कॉन्फ़िगर ऑब्जेक्ट आपको निम्न पंक्ति में क्या देता है।

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

यहां मेरी पूरी अपडेटकी() विधि है, जिसे अब मुझे एहसास है कि मैंने वेब पेज से थोड़ा सा अनुकूलित किया है। शायद यह मदद करता है।

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

तब के बाद मैं अपने कुंजी (रों) बचाया है, मैं

EncryptAppSettings("appSettings"); 

फोन और शायद आप भी वहां सूट करने के लिए परम मूल्य अनुकूलित कर सकते हैं।

+0

धन्यवाद।अच्छा लग रहा है। – Karan

+0

प्रश्न अद्यतन। हालांकि, यह केवल ऐप सेटिंग्स अनुभाग को एन्क्रिप्ट करने के लिए दिखाता है, न कि कस्टम अनुभाग। मेरे मामले में, मैं उदा। के अंतर्गत एक कस्टम टैग एन्क्रिप्ट करना चाहता हूं। <कॉन्फ़िगरेशन><... data> Karan

+0

मेरा उत्तर संपादित किया गया। –

संबंधित मुद्दे