我可以使用 aspnet_regiis.exe
命令配置连接字符串加密。现在我创建了配置部分,在其中添加了自定义配置元素集合,这将存储连接信息的值。
namespace ExpressSnapSortCreation
{
/// <summary>
/// This Class hold the the Collection of Cofigration key
/// </summary>
internal class ServerReplicationsCollection : ConfigurationElementCollection
{
/// <summary>
/// This Will return the ConfigurationElement
/// </summary>
/// <returns>ConfigurationElement</returns>
protected override ConfigurationElement CreateNewElement()
{
return new ServerReplicationsElement();
}
/// <summary>
/// Get Element BY key
/// </summary>
/// <param name="element"></param>
/// <returns></returns>
protected override object GetElementKey(ConfigurationElement element)
{
return ((ServerReplicationsElement)element).Name;
}
/// <summary>
/// This is override on the Elements
/// </summary>
public class ServerReplicationsElement : ConfigurationElement
{
/// <summary>
/// Name of the Element
/// </summary>
[ConfigurationProperty("name", IsRequired = true)]
public string Name
{
get { return (string)this["name"]; }
set { this["name"] = value; }
}
/// <summary>
/// Data base name
/// </summary>
[ConfigurationProperty("connectionString", IsRequired = true)]
public string ConnectionString
{
get { return (string)this["connectionString"]; }
set { this["connectionString"] = value; }
}
/// <summary>
/// Data base user name
/// </summary>
[ConfigurationProperty("providerName", IsRequired = true)]
public string ProviderName
{
get { return (string)this["providerName"]; }
set { this["providerName"] = value; }
}
/// <summary>
/// Display Order
/// </summary>
[ConfigurationProperty("order", IsRequired = false)]
public int Order
{
get { return (int)this["order"]; }
set { this["order"] = value; }
}
}
}
}
这是章节创作的代码
class ServerReplications : ConfigurationSection
{
/// <summary>
/// The name of this section in the app.config.
/// </summary>
public const string SectionName = "ReplicationConfigurationSection";
/// <summary>
/// Replication data base name
/// </summary>
private const string ReplicationCenterCollectionName = "ReplicationDataBases";
[ConfigurationProperty(ReplicationCenterCollectionName)]
[ConfigurationCollection(typeof(ServerReplicationsCollection), AddItemName = "add")]
public ServerReplicationsCollection ReplicationDataBases { get { return (ServerReplicationsCollection)base[ReplicationCenterCollectionName]; } }
}
这是我的App Config文件。
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="ReplicationConfigurationSection"
type="ExpressSnapSortCreation.ServerReplications, ExpressSnapSortCreation" />
</configSections>
<ReplicationConfigurationSection>
<ReplicationDataBases>
<add name="ApplicationServices" connectionString="Data Source=PC-002\SQLEXPRESS2014;Initial Catalog=AML25;Persist Security Info=True;User ID=sa;Password=StItS!@#SeRvErPC-003" providerName="System.Data.SqlClient" order="1" />
<add name="ApplicationServices2" connectionString="Data Source=PC-004\SQLEXPRESS2014;Initial Catalog=AML26;Persist Security Info=True;User ID=sa;Password=StItS!@#SeRvErPC-002" providerName="System.Data.SqlClient" order="2" />
</ReplicationDataBases>
</ReplicationConfigurationSection>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
在应用程序中,我们获取连接字符串的值。出于安全目的我们无法在App.config值中显示数据。然后需要加密以下部分
这是我使用的第一个命令
aspnet_regiis.exe -pef "ReplicationConfigurationSection" "C:\Users\mukesh.singh\Documents\Visual Studio 2015\Projects\AML\ExpressSnapSortCreation"
收到错误将文件名“app.config”转换为“Web.config”
创建配置节处理程序时发生错误 for ReplicationConfigurationSection:无法加载文件或程序集 'ExpressSnapSortCreation'或其依赖项之一。系统 找不到指定的文件。 (C:\ Users \ mukesh.singh \ Documents \ Visual Studio 2015 \ Projects \ AML \ ExpressSnapSortCreation \ bin \ Debug \ web.config第4行)
无法加载文件或程序集“ExpressSnapSortCreation”或其中之一 它的依赖关系。该系统找不到指定的文件。失败!
无法从中加载类型'ExpressSnapSortCreation.ServerReplications' assembly'System.Web,Version = 4.0.0.0,Culture = neutral, 公钥= b03f5f7f11d50a3a”。
我也试过这个组合
aspnet_regiis.exe -pef "ExpressSnapSortCreation.ServerReplications/ExpressSnapSortCreations" "C:\Users\mukesh.singh\Documents\Visual Studio 2015\Projects\AML\ExpressSnapSortCreation
答案 0 :(得分:1)
这是我用来加密app.config上的自定义部分的代码。我只是在Bin文件夹中打开它是加密的app.config文件
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSection section = config.GetSection("ReplicationConfigurationSection");
if (section != null)
{
if (!section.IsReadOnly())
{
if (!section.SectionInformation.IsProtected)
{
if (!section.ElementInformation.IsLocked)
{
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
Console.WriteLine("Section {0} is now protected by {1}",
section.SectionInformation.Name.ToString(),
section.SectionInformation.ProtectionProvider.Name.ToString());
}
}
}
}
当我打开Config文件时,它看起来像这样
<configuration>
<configSections>
<section name="ReplicationConfigurationSection" type="ExpressSnapSortCreation.ServerReplications, ExpressSnapSortCreation" allowLocation="true" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" overrideModeDefault="Allow" restartOnExternalChanges="true" requirePermission="true" />
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
<ReplicationConfigurationSection configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>FXUE9iChoq/7HGE4nV3muaPZy4ejcDCcZx0PVasHZJi4xRs0ZPXI08unUegvXs+C2FALEskpHa+Tt4u24I8OhSRS9QI+I2kpgxTlQvMFmsvFu6pkDQS1jt13EHmov0Thr1CBGhMXyHMm0EGr0+yWKI3PfD9vwGmQl0yawLdyiockQk9kCuik8g8jnpiyaidYL/RKpdwNPBuH9wOm8WWTXlUL4N+SO98jAX0PPoDjaDbDdB14t71Favg7vxpjIj5pDlljj59ek3pudW0etIHm6v8YsJaE9Et62DfzB31W4kmGNgmmGWTu4/hF93J0kv9VgkmKTcdOmeXq2KHA2JCLKg==</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>JkWK1jpOzcbtX8k/SVvTVRxQKO0ylRyWQ8imAOaIz51e3JmdhqXgdH8p5unceEiLCH2PTZOBZMIgYW4hYILiGnUE4SBZ6PfFr2vGowXdg13K808uSAx9taFb0HfvubcSQ23nwoBuJJmKfYooZX73YRnRvxIFH5SJZZ+WB8mTlNgaAZ+JftaN2rAlpH/cei4gwPCR64PaTu5VDJflSj0WnF7ZD13c0I0ZpHtJs29u0XTkBnAsL5DGULZsAexn2+89uaLfNpr9K+AYW8477TelVpnHGsMGDSOYOlWNUylldjATKZ/sgzDU/gq29dV+9RO18xvCHLXWjKKiT4B7UOlp82/1D/ky3OlK6opCEIJbCStm0q8MrvSQksdPN/yJ+S0Tv3E8hD4Wmf6grJOBlMGesomickqOzEudc+3fRwQS4Paf+ca3NgAk5utI+piZNhNtAnA/XU1ozDD0Zv381xaMTOTNjBq35hplK8zuHBVg+bZkbilSd3L4x4QAEv1Ds9Kt5hyUZyUNMWoXUXk0qoOP8UbMdHvUGvjsvAFudvZ7ZxtntiARptTFeTfg3qcghDdoyzOYBK3Md2urstEVdsdj6z6/RqBFO4qGY6hQ/IvIq+7lgG2rDsGH3AJlRNSdb+YJYktqGut65kvqcrSR2CgtYoGWcsUneBkpzQ65Rb0d6jL2Qt7zfJg1aA2iv97N15+tPjFDUQbbYFBi2ubvq1/pc7s/odaSUNK2LCfctXFG32MbEndJk1rXreLencAH/KlO2iJzA6QujwcT/LYo6w97lVbkrZAWWgxnUmVKeq+OwS6AybaK/sIw5wxBFsouCNdt</CipherValue>
</CipherData>
</EncryptedData>
</ReplicationConfigurationSection>
</configuration>
更多。