代码之家  ›  专栏  ›  技术社区  ›  Helbo

缺少节声明

  •  0
  • Helbo  · 技术社区  · 6 年前

    我已经在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 回复  |  直到 6 年前
        1
  •  0
  •   pfx RAINA    6 年前

    在回复我的评论时,您提到您还尝试了使用根目录 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>