我已经加密了我的 Web 应用程序的 web.config 文件的appSettings和connectionStrings部分。
这是我在 Visual Studio 2010 命令提示符下输入的两个命令:
aspnet_regiis.exe -pef "connectionStrings" C:\Provider -prov "DataProtectionConfigurationProvider"
aspnet_regiis.exe -pef "appSettings" C:\Provider -prov "DataProtectionConfigurationProvider"
现在,这两个命令在目录中生成了一个新的 web.config 文件以及解决方案文件。我打开了这个 web.config 文件,它只包含原始 web.config 文件的加密 appSettings 和 connectionStrings 部分。
然后我打开了我的 Web 应用程序,删除了原来的appSettings和connectionStrings部分并粘贴了加密的部分。
这就是我的 web.config 文件现在的样子:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA6h2T0PWsHUC2CPpYvY8QUwQAAAACAAAAAAAQZgAAAAEAACAAAAAdlSIaGrQ1CFjswJi2RxekJ4ZxmRArilsOiqrmUXt6JgAAAAAOgAAAAAIAACAAAACaV/bVjlK60wX9LOFzRsrkbcDjSOT+3Qj0JyUZZszNNSAAAACaQC3oKCPX1gaxZK3ghS6lAMcVwpNpbMpyNpeoiwxap0AAAAD87rr8QUaIQJv2Sc+i+RGWq1+vExAPNjjG1VtWvK4ILsOX88iBRRx0tpAFdNAw0AvGoxUTA7UQGKm7hTHBaAMz</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA6h2T0PWsHUC2CPpYvY8QUwQAAAACAAAAAAAQZgAAAAEAACAAAAB4Y7QqEGRvo9T04hE8hvd3wMvRXqIMa/UJBkOQnMnsbgAAAAAOgAAAAAIAACAAAADnzwxmuoWUQLYJ0/YPUkgvR/xyXDZNaQI4ZrMmACqvaTAAAAC6C0nEhW+g8WHcNJLN5DRi8uNimkG3GyMEajrB33ST7DN49W925xIeMiN3kvyLAcJAAAAAPcgh+jh6RzsfQElj7/e1RNAQEFQykiqYfLbUEMd+qHcfkLCNwe3tczJQDckGH1cT7Y9At16pPfek1bKZeM7YpQ==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
<system.web>
<compilation debug="true" explicit="true" targetFramework="4.0"/>
<httpCookies httpOnlyCookies="true" requireSSL="true"/>
<customErrors mode="On" defaultRedirect="DefaultErrorPage.htm">
<error statusCode="404" redirect="ErrorPage.htm"/>
</customErrors>
<trace enabled="false"/>
</system.web>
</configuration>
我现在遇到的问题是,当我尝试使用访问 web.config 文件中的数据(例如连接字符串)的页面时,我得到一个空引用异常。
例如,此行生成一个空引用异常:
string connection = ConfigurationManager.ConnectionStrings["DB_Connection"].ConnectionString;
请问我该如何解决?谢谢 :)
澄清
在使用数据保护 API 加密之前,这条线路运行良好。加密后开始出现空引用异常。