我是论坛的新手。
我刚刚开始使用C#和webservices过去3个月,我有一个很棒的网络服务。不幸的是,我们使用一个自定义的“配置”文件(实际上是一个XML文件)来存储我们的连接字符串。
我们不想使用web.config connectionstring部分,因为内部编写的类和关联的xml文件将被其他项目(不仅仅是Web服务)使用。问题是我需要加密“配置”XML文件的用户名和密码,并用我的C#代码解密它。
可以说XML文件具有以下结构......
<?xml version='1.0'?>
<!--
TEST ENVIRONMENT
-->
<thesystem>
<connectionString string="Data Source=( DESCRIPTION = ( ADDRESS_LIST = ( ADDRESS = ( PROTOCOL = TCP )( HOST = {0} )( PORT = {1} ) ) )( CONNECT_DATA = ( SERVER = DEDICATED )( SERVICE_NAME = {2} ) ) ); User Id= {3}; Password = {4};"/>
<oracleDetails>
<site name="thesite">
<schema dbname="thedb" dbHost="99.99.99.99" dbPort="9999" dbServiceName="SYSTEMSITE" dbUsername="xxx" dbPassword="yyy"/>
</site>
</oracleDetails>
</thesystem>
我在网上看了一下并设法围绕一种使用aspnet_regiis.exe加密文件的方式“作弊”
即:
C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727&gt; aspnet_regiis -pef oracleDetails。 -prov DataProtectionConfigurationProvider
加密配置部分... 成功了!
我通过将标记重命名并将xml文件重命名为web.config来实现此目的。我欺骗ASP.net认为我正在加密一个Web配置文件。
现在的问题是如何在C#中解密?
我尝试过使用以下内容......
Configuration _myConfig = ConfigurationManager.OpenExeConfiguration("OURSYSTEM.config");
其中OURSYSTEM.config
是上面的XML文件。
该程序抛出一个错误,说它无法找到该文件。此外,OpenExeConfiguration更适用于带有app.config文件的Win应用程序。
答案 0 :(得分:0)
运行aspnet_regiis -pef oracleDetails . -prov DataProtectionConfigurationProvider
后,配置XML加密了吗?最有可能的是,问题是你的ASP.Net无法解密它,这最终是一个关键的访问问题。确保使用应用程序池可以访问的凭据对其进行加密。 IE浏览器。如果您的ASP应用程序池以用户foo运行,那么您必须以同一用户身份运行aspnet_regiis。