我使用文章Creating a Flexible Configuration Section Handler在我的应用程序中创建灵活配置节处理程序。
我还看到了这篇题为Encrypting Custom Configuration Sections on the OdeToCode blog的文章,介绍了如何加密web.config文件的各个部分。
从第一篇文章开始,我们有了这个web.config代码。
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<configSections>
<sectionname="StyleSheetSettings_1"
type="FifteenSeconds.Core.BasicConfigurator"/>
</configSections>
<StyleSheetSettings_1>
<StyleSheets>
<Style SheetName="Page"Href="Styles/Page.css"Media="screen"/>
<StyleSheetName="Custom"Href="Styles/Custom.css"Media="screen"/>
<StyleSheetName="Print"Href="/Lib/Styles/Print.css"Media="print"/>
</StyleSheets>
</StyleSheetSettings_1>
</configuration>
我尝试使用以下代码使用以下命令行代码加密代码。
aspnet_regiis.exe -pef "StyleSheetSettings_1" C:\Test\
我收到以下错误
无法加载类型 FifteenSeconds.Core.BasicConfigurator” 从程序集'System.Web, 版本= 4.0.0.0,文化=中立, 公钥= b03f5f7f11d50a3a”。
任何帮助都将不胜感激。
答案 0 :(得分:19)
以下是此问题的另一种解决方法(在http://www.dotnetnoob.com/2013/01/how-to-encrypt-custom-configuration.html处找到)。在运行aspnet_regiis命令之前,注释掉configSections元素(/ configuration / configSections)下自定义部分的section元素,并且自定义部分应该加密。
<configSections>
<!--<section name="myCustomSection" type="My.Product.CustomSection, My.Product.Assembly/>-->
</configSections>
c:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -pef myCustomSection C:\path\to\app
Microsoft (R) ASP.NET RegIIS version 4.0.30319.17929
Administration utility to install and uninstall ASP.NET on the local machine.
Copyright (C) Microsoft Corporation. All rights reserved.
Encrypting configuration section...
Succeeded!
答案 1 :(得分:8)
唯一已知的解决方案是可怕的黑客攻击。将程序集(和所有依赖项)复制到相关的.NET框架目录(aspnet_regiis.exe所在的目录)。
答案 2 :(得分:0)
尝试更改类型以包含程序集名称
type="FifteenSeconds.Core.BasicConfigurator, MyWebApplication"
这假设BasicConfiguration在您的Web App中
答案 3 :(得分:0)
我在配置文件中引用类型时遇到了类似的问题。正如Conrad Frix建议的那样,您需要在命名空间类型引用之后引用程序集名称。我错误地将我认为的程序集名称放下来,而不是检查它可能与项目名称有不同的名称。您可以通过右键单击Visual Studio中的项目并转到属性来确保。仔细检查以确保项目正在输出与您在web.config中指定的名称相同的程序集。
答案 4 :(得分:0)
这样的事可能有用,我自己没有尝试过,而不是一个干净的解决方案
http://blogs.msdn.com/b/kaevans/archive/2004/08/19/217177.aspx 它使用System.Configuration.NameValueSectionHandler。
(System.Collections.Specialized.NameValueCollection) WebConfigurationManager.GetSection("SectionName")
我尝试过这种方式,使用System.Configuration.SingleTagSectionHandler和
(Hashtable)WebConfigurationManager.GetSection("SectionName");
http://vaultofthoughts.net/UsingSingleTagSectionHandlerInsteadOfAppSettings.aspx
答案 5 :(得分:0)
我刚刚很容易解决了类似的问题。您需要在&#34;类型&#34;中指定库。属性。
而不是:
<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator"/>
尝试:
<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator, FifteenSeconds"/>
我的问题几乎完全相同,尽管我使用的是.NET库。
此:
<section name="Roles" type="System.Configuration.AppSettingsSection" />
变成了:
<section name="Roles" type="System.Configuration.AppSettingsSection, System.Configuration" />
希望这有效。