我已经在Web.config中完成了以下操作
<configuration>
<configSections>
<section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" allowLocation="true" />
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
... etc
然后在Views / Web.config中,我试图像这样使用它
<secureAppSettings>
<!--Captcha keys-->
<add key="RecaptchaPrivateKey" value="somevalue" />
<add key="RecaptchaPublicKey" value="someothervalue" />
</secureAppSettings>
但是每次尝试打开网站时,都会出现以下错误:
配置错误配置部分“ secureAppSettings”无法 被读取,因为它缺少节声明
,我不知道该怎么办。我目前正在尝试在这样的视图中使用它:
@((NameValueCollection)WebConfigurationManager.GetSection("secureAppSettings"))["RecaptchaPublicKey"]
编辑:
我已经尝试过,其中一项评论建议将configSections移至View / web.config
结果是以下错误消息
解析器错误消息:为secureAppSettings配置节创建处理程序时发生错误:指定的程序集名称或指定的代码库无效。 (来自HRESULT的异常:0x80131047)
我以为这是我做错了的标志,但是我现在看到也许我需要在这里修复某些东西,而不是像我以前那样做。
对我来说,消息像以前一样神秘。
澄清我要存档的内容。
我的Web.config中有一些我想加密的敏感信息。 我读到我可以制作一个secureAppSettings部分,然后从那里对其进行加密。我之所以要从appSettings部分中分离出这些信息,是因为其中包含许多其他信息,而我真的不需要加密。 最终,所有这些都会导致我能够制作MSI网站安装程序,在安装过程中,在加密secureAppSettings之前,我可以在appSettings和secureAppSettings部分中更改或添加设置。以便轻松设置和安装我正在构建的网站。
现在,我不确定我的解决方案当前的工作方式是否有效,如果没有,那么我想指出正确的方向,以解决我的最终目标,即能够实现一个MSI安装程序,在安装过程中可以在其中更改配置文件并加密所有敏感信息。
答案 0 :(得分:0)
在回复我的评论时,您提到您还尝试使用根web.config
文件而不是Views
文件夹中的文件进行设置。
从理论上讲,必须可以使用Views\web.config
文件。
使用ASP.NET MVC
只能成功使用根web.config
。
如下所示。
请注意,我使用了不太明确的section
定义。
Web.config
<configuration>
<configSections>
<section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<!-- Other configuration elements -->
<secureAppSettings>
<!--Captcha keys-->
<add key="RecaptchaPrivateKey" value="somevalue" />
<add key="RecaptchaPublicKey" value="someothervalue" />
</secureAppSettings>
</configuration>
在我看来
<span>@(((NameValueCollection)WebConfigurationManager.GetSection("secureAppSettings"))["RecaptchaPublicKey"])</span>