Шифрование пользовательских разделов web.config - PullRequest
12 голосов
/ 17 августа 2010

Я использовал статью Создание обработчика раздела гибкой конфигурации , чтобы создать обработчик раздела гибкой конфигурации в своем приложении.

Я также видел эту статью под названием Шифрование разделов пользовательской конфигурации вблог OdeToCode о том, как шифровать части файла 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'from Assembly' System.Web, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a '.

Любая помощь приветствуется.

Ответы [ 6 ]

19 голосов
/ 03 июля 2013

Вот еще один обходной путь для этой проблемы (находится по адресу http://www.dotnetnoob.com/2013/01/how-to-encrypt-custom-configuration.html).. Закомментируйте элемент section для пользовательского раздела в элементе configSections (/ configuration / configSections) перед запуском команды aspnet_regiis, и пользовательский раздел должен быть зашифрован.

<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!
8 голосов
/ 03 марта 2011

Единственное известное решение - ужасный взлом.Скопируйте сборку (и все зависимости) в соответствующий каталог платформы .NET (где находится aspnet_regiis.exe).

0 голосов
/ 07 ноября 2014

Я просто решил похожую проблему очень легко. Вам необходимо указать библиотеку в атрибуте "type".

Вместо:

<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" />

Надеюсь, это сработает.

0 голосов
/ 17 ноября 2011

Как-то так может работать, я не пробовал сам, а не чистое решение

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

0 голосов
/ 15 июня 2011

У меня была похожая проблема при ссылке на тип в моем файле конфигурации.Как предложил Конрад Фрикс, вам нужна ссылка на имя сборки после ссылки на тип пространства имен.Я сделал ошибку, записав то, что я считаю именем сборки, вместо того, чтобы проверять, может ли оно иметь имя, отличное от имени проекта.Вы можете убедиться, щелкнув правой кнопкой мыши на проекте в Visual Studio и перейдя в свойства.Дважды проверьте, чтобы убедиться, что проект выводит сборку с тем же именем, которое вы указали в файле web.config.

0 голосов
/ 17 августа 2010

пытается изменить тип для включения имени сборки

type="FifteenSeconds.Core.BasicConfigurator, MyWebApplication"

Это предполагает, что базовая конфигурация находится в вашем веб-приложении

...