2009-03-27 4 views
2

Ich habe ein Projekt, für das wir einige Funktionalität von einem vorhandenen Client in ein Webportal in ASP.NET 2.0 erweitern. Der Client basiert auf Windows Forms (in .NET 2.0). Es enthält einige Einstellungen, die im Projekt> Eigenschaften> Einstellungen.Einstellungen enthalten sind, einschließlich einer generierten Datei settings.Designer.cs. Diese Datei bietet nette automatische Wrapper für jede der Einstellungen.Was ist der beste Weg, Einstellungen (Konfiguration) in ASP.NET 2.0 zu verwalten?

Beim Versuch, die Website einzurichten, war ich frustriert von einem offensichtlichen Mangel an Parität für diese Funktion. Ich habe eine web.config, und es kann einen Abschnitt haben. Dies bedeutet, Zugriff über Code mit Streichern, zum Beispiel:

WebConfigurationManager.AppSettings["mySetting"]; 

Ich kann sogar die Einstellungen auf eine andere Datei auf diese Weise beziehen sich haben, ein wenig Abstraktion ergab, und einfacher Check-Ins zu Quellcode:

<appSettings configSource="web.settings.config"/> 

, aber letztlich fehlt dies einige der Funktionalität des Client-Projekte Einstellungen System.

Besonders würde ich sehr gerne diese Funktionen, wenn überhaupt möglich:

  • Automatisch generierte Accessorklasse (der Einfachheit halber intellisense ..)
    • Convenient
    • stark typisierten
    • Bietet Intellisense
    • Code wird nicht gegen Tippfehler in den Namen
    • kompilieren
  • Einfache Schnittstelle
    • Die Settings.settings vor ein schönes Gitter
    • bereitgestellt
    • Alle Optionen
    • Zeigte Drop-Down-Entscheidungen für bestimmte Optionen dargestellt
    • Sie haben noch keine XML bearbeiten
    • Kann 't fat-finger ein Winkel

Ich weiß, dass es möglich wäre, eine Klasse zu erstellen, die diese umschließt, aber sie würde nicht automatisch mit den Einstellungen synchron bleiben und müsste bei jeder Änderung manuell bearbeitet werden. Es würde einige der oben genannten jedoch zur Verfügung stellen.

Kann ich mit den Projekteinstellungen Parität erhalten, wie in unserem Client?

Wie können Einstellungen für eine ASP.NET 2.0-Website am besten verwaltet werden?

Antwort

1

sollten Sie Web Application verwenden, nicht Website und Sie werden als Windows-Anwendungen

+0

Ich bin nicht sicher, dass eine Option für uns ist, habe ich kein Glück mit einer Website? –

+0

Sie sind nicht ganz Pech, aber für eine Website müssen Sie die Einstellungen manuell aus der Konfigurationsdatei analysieren. – Albert

0

standardmäßig Zugriff auf die Einstellungen in der gleichen Art und Weise haben, die appSettings Abschnitt in web.config verwendet, ist die einfachste Art und Weise Ihre verwalten Anwendungseinstellungen für die Webanwendung. Sie können die Werte innerhalb der Anwendungseinstellungen nach Bedarf umwandeln. In diesem Fall werden Sie jedoch stark tippen, was für Sie wie ein Deal-Breaker klingt.

Wenn Sie die starke Typisierung beibehalten müssen, gehen Sie in die Projekteinstellungen (ähnlich der WinForms-Anwendung) und legen Sie dort Ihre Werte fest. Sie werden bemerken, dass Dateien Settings.settings existiert innerhalb eines MyProjects Ordner, aber Sie werden auch den folgenden Codeausschnitt unten am unteren Rand der Datei web.config (geklaut von einem meiner Anwendungen) finden:

<applicationSettings> 
    <EAF.My.MySettings> 
     <setting name="EAF_AS400EmployeeServices_EmployeeServices" serializeAs="String">           
     <value>http://countynetappsdev/AS400DataService/EmployeeServices.asmx</value> 
    </setting> 
</applicationSettings> 

Beachten Sie die Eigenschaft serializeAs in diesem Abschnitt. Sobald Sie etwas in diesem Abschnitt haben, können Sie über die My.Settings-Bibliothek mit VB.NET auf die Einstellungen zugreifen. Da Sie jedoch C# verwenden, benötigen Sie eine Kleinigkeit mehr Arbeit, aber eine einfache Codelösung kann here gefunden werden.

0

Ich erstelle Klassen, die meine web.config umschließen, um stark typisierten, intellisense-freundlichen Zugriff auf die Einstellungen zu bieten.

Auch die Einstellungen werden wahrscheinlich in der XML von den Supportmitarbeitern bei der Implementierung geändert, so dass das Raster in VS keinen Unterschied macht. Zugegeben, es ist nicht automatisch generiert, aber kopieren/einfügen ist dein Freund :)