2010-08-17 16 views
8

Utilicé el artículo Creating a Flexible Configuration Section Handler para crear un controlador de sección de configuración flexible en mi aplicación.Cifrado de secciones personalizadas de un web.config

También vi este artículo titulado Encrypting Custom Configuration Sections on the OdeToCode blog, sobre cómo cifrar partes de un archivo web.config.

Desde el primer artículo, tenemos este código 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> 

He intentado utilizar el siguiente código para encriptar el código usando algo como el siguiente código de línea de comando.

aspnet_regiis.exe -pef "StyleSheetSettings_1" C:\Test\ 

estoy recibiendo el siguiente error

No se pudo cargar el tipo FifteenSeconds.Core.BasicConfigurator ' del ensamblado' System.Web, versión = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a '.

Cualquier ayuda sería apreciada.

Respuesta

0

tratando Tipo de cambio para incluir el nombre del ensamblado

type="FifteenSeconds.Core.BasicConfigurator, MyWebApplication" 

Esto supone la BasicConfiguration está en su aplicación web de

+2

Después de agregar el nombre de conjunto type = "FifteenSeconds.Core.BasicConfigurator, FifteenSeconds.Core", sigo recibiendo el siguiente error. cifrado de sección de configuración ... Se ha producido un error al crear el controlador de sección de configuración para StyleSheetSettings_1: No se pudo cargar el archivo o ensamblado 'FifteenSeconds.Core' o uno de sus dependen cies. El sistema no puede encontrar el archivo especificado. –

+0

dónde está la DLL relativa a la Web.Config –

+0

¿Podría responder http://stackoverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl? – Lijo

8

La única solución conocida es un terrible corte. Copie el ensamblado (y todas las dependencias) en el directorio correspondiente de .NET framework (donde se encuentra aspnet_regiis.exe).

+0

¿Podría responder http://stackoverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl? – Lijo

+0

@ Adam - Hola, gracias. Esto resolvió mi problema :-) – Jeb

0

He tenido un problema similar al hacer referencia a un tipo en mi archivo de configuración. Como sugirió Conrad Frix, necesita una referencia al nombre del ensamblado después de la referencia de tipo de espacio de nombres. Cometí el error de escribir lo que creo que es el nombre del ensamblado en lugar de verificar que pueda tener un nombre diferente al nombre del proyecto. Puede asegurarse haciendo clic derecho en el proyecto en Visual Studio y yendo a las propiedades. Verifique dos veces para asegurarse de que el proyecto está produciendo un ensamblado con el mismo nombre que está especificando en su web.config.

0

Algo como esto podría funcionar, No Lo He probado a mí mismo y no una solución limpia

http://blogs.msdn.com/b/kaevans/archive/2004/08/19/217177.aspx que utiliza System.Configuration.NameValueSectionHandler.

(System.Collections.Specialized.NameValueCollection) WebConfigurationManager.GetSection("SectionName") 

He tratado de esta manera sin embargo, el uso de System.Configuration.SingleTagSectionHandler y

(Hashtable)WebConfigurationManager.GetSection("SectionName"); 

http://vaultofthoughts.net/UsingSingleTagSectionHandlerInsteadOfAppSettings.aspx

12

Aquí hay otro remedio para este problema (que se encuentra en http://www.dotnetnoob.com/2013/01/how-to-encrypt-custom-configuration.html). Comente el elemento de sección para la sección personalizada en el elemento configSections (/ configuration/configSections) antes de ejecutar el comando aspnet_regiis y la sección personalizada debe cifrarse.

<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! 
+0

Hizo el trabajo, ¡Gracias, señor! – Ben

+0

¡Buen trabajo, gracias! Tiene sentido, la sección comentada solo es necesaria para que la aplicación se desalinice según el tipo especificado y solo se enreda con el cifrado. –

+0

3 años después, este error aún no se solucionó. Caramba caramba. – Zoomzoom

0

Acabo de resolver un problema similar muy fácilmente.Debe especificar la biblioteca dentro del atributo "tipo".

En lugar de:

<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator"/> 

Probar:

<section name="StyleSheetSettings_1" type="FifteenSeconds.Core.BasicConfigurator, FifteenSeconds"/> 

Mi problema era casi exactamente el mismo, a pesar de que estaba usando las bibliotecas .NET en su lugar.

Este:

<section name="Roles" type="System.Configuration.AppSettingsSection" /> 

Se convirtió en:

<section name="Roles" type="System.Configuration.AppSettingsSection, System.Configuration" /> 

Esperamos que esto funciona.

Cuestiones relacionadas