缺少部分声明

时间:2018-07-25 09:55:29

标签: .net asp.net-mvc web-config configsection

我已经在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安装程序,在安装过程中可以在其中更改配置文件并加密所有敏感信息。

1 个答案:

答案 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>