2010-08-17 18 views
8

Ich habe den Artikel Creating a Flexible Configuration Section Handler verwendet, um einen flexiblen Konfigurationsabschnitt Handler in meiner Anwendung zu erstellen.Verschlüsseln benutzerdefinierter Abschnitte einer web.config

Ich habe auch diesen Artikel mit dem Titel Encrypting Custom Configuration Sections on the OdeToCode blog, zum Verschlüsseln von Teilen einer web.config-Datei.

Aus dem ersten Artikel haben wir diesen web.config-Code.

<?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> 

Ich habe versucht, den folgenden Code zu verwenden, um den Code mit etwas wie dem folgenden Befehlszeilencode zu verschlüsseln.

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

Ich erhalte die folgenden Fehler

Typen kann nicht FifteenSeconds.Core.BasicConfigurator ' aus Assembly' System.Web, Version = 4.0.0.0, Culture = neutral laden, PublicKeyToken = b03f5f7f11d50a3a '.

Jede Hilfe wäre willkommen.

Antwort

0

Änderungsart versucht den Namen der Assembly enthalten

type="FifteenSeconds.Core.BasicConfigurator, MyWebApplication" 

Dies setzt voraus, die BasicConfiguration in Ihrem Web App

ist
+2

Nach dem Hinzufügen des Assemblynamens type = "FifteenSeconds.Core.BasicConfigurator, FifteenSeconds.Core" erhalte ich immer noch den folgenden Fehler. Verschlüsseln des Konfigurationsabschnitts ... Beim Erstellen des Konfigurationsabschnittshandlers für StyleSheetSettings_1 ist ein Fehler aufgetreten: Die Datei oder Assembly 'FifteenSeconds.Core' oder einer der davon abhängigen cies konnte nicht geladen werden. Die angegebene Datei wurde vom System nicht gefunden. –

+0

wo ist die DLL relativ zur Web.Config –

+0

Könnten Sie bitte http://StackOverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl beantworten? – Lijo

8

Die einzige bekannte Lösung eine schreckliche Hack ist. Kopieren Sie die Assembly (und alle Abhängigkeiten) in das entsprechende .NET Framework-Verzeichnis (in dem sich aspnet_regiis.exe befindet).

+0

Könnten Sie bitte http://stackoverflow.com/questions/9528681/listing-users-with-access-to-netframeworkconfigurationkey-acl beantworten? – Lijo

+0

@Adam - Hey, Danke. Dies löste mein Problem :-) – Jeb

0

Ich hatte ein ähnliches Problem beim Verweisen auf einen Typ in meiner Konfigurationsdatei. Wie von Conrad Frix vorgeschlagen, benötigen Sie nach dem Verweis auf den Namespacetyp einen Verweis auf den Assemblynamen. Ich habe den Fehler gemacht, was ich denke, den Assemblynamen zu schreiben, anstatt zu überprüfen, dass er einen anderen Namen als den Namen des Projekts hat. Sie können sicherstellen, dass Sie mit der rechten Maustaste auf das Projekt in Visual Studio klicken und zu Eigenschaften wechseln. Überprüfen Sie, ob das Projekt eine Assembly mit demselben Namen ausgibt, den Sie in Ihrer Datei web.config angegeben haben.

0

So etwas wie dies funktionieren könnte, ich es selbst haben versucht, und nicht eine saubere Lösung

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

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

ich auf diese Weise zwar versucht haben, mit System.Configuration.SingleTagSectionHandler und

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

http://vaultofthoughts.net/UsingSingleTagSectionHandlerInsteadOfAppSettings.aspx

12

Hier ist eine andere Abhilfe für dieses Problem (bei http://www.dotnetnoob.com/2013/01/how-to-encrypt-custom-configuration.html gefunden). Kommentieren Sie das Abschnittselement für den benutzerdefinierten Abschnitt unter dem Element configSections (/ configuration/configSections), bevor Sie den Befehl aspnet_regiis ausführen, und der benutzerdefinierte Abschnitt sollte verschlüsselt werden.

<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

Es hat den Job, danke, Sir! – Ben

+0

Guter Job, danke! Sinnvollerweise wird der kommentierte Abschnitt nur benötigt, damit die App auf den angegebenen Typ entsalzen und nur mit Verschlüsselung umgehen kann. –

+0

3 Jahre später ist dieser Bug immer noch nicht behoben. Verdammt. – Zoomzoom

0

Ich habe gerade ein ähnliches Problem sehr einfach gelöst.Sie müssen die Bibliothek innerhalb des Attributs "type" angeben.

Statt:

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

Versuchen:

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

Mein Problem war fast genau die gleiche, obwohl ich stattdessen die .NET-Bibliotheken wurde mit.

Dieses:

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

Ist jetzt:

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

Hoffentlich funktioniert.

Verwandte Themen