Il modo migliore per gestire le stringhe di connessione in un progetto contenente sia il codice ASP classico che ASP.Net 1.1?

StackOverflow https://stackoverflow.com/questions/1610061

Domanda

Ho un progetto che ho ereditato che è principalmente un'applicazione ASP classica; tuttavia, mescolati nell'applicazione sono una manciata di pagine ASP.net. Alcune delle pagine ASP.net sono 1.1 e non usano un codice dietro il modello.

Le pagine ASP classiche hanno un numero di / include directory in cui è presente un file per le connessioni al database. Le pagine ASP.Net hanno la stringa di connessione codificata nel loro codice.

Sto cercando di ripulire questo casino di stringhe di connessione in modo che sia più facile da gestire in tutti gli ambienti di sviluppo.

Qualcuno ha qualche consiglio su come potrei essere in grado di farlo efficacemente che funzionerà sia per le pagine Classic ASP che ASP.Net?

Grazie

È stato utile?

Soluzione

Metti un file web.config nella radice del sito asp classic. Le pagine ASP.net senza codice (e supponendo che non ci siano directory / applicazioni virtuali da nessuna parte) useranno quel file web.config. Puoi inserire stringhe di connessione. Probabilmente finirai per avere due serie di stringhe, ma è meglio di molte altre. E se vuoi davvero, puoi scrivere un po 'di codice asp classic per leggere quel file di configurazione.

Altri suggerimenti

In questo modo si sta concentrando l'isolamento del file di stringa di connessione da webroot per il sistema di controllo della versione del codice sorgente (come svn).

File:

c:\inetpub\config\config.xml
c:\inetpub\wwwroot\global.asa
c:\inetpub\wwwroot\onInit.asp

config.xml:

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <database
      ip="XXXX"
      catalog="XXXX"
      id="XXXX"
      password="XXXX"
    />
</root>

Global.asa:

<script runat="Server" language="VBScript">
    Sub Application_OnStart()        
        server.execute("/onInit.asp")
    End Sub

    Sub Application_OnEnd()
    End Sub
</script>

onInit.asp:

<% 

    dim xmlDoc, xmlPath, objNodes
    set xmlDoc = server.CreateObject("microsoft.xmldom")
    xmlDoc.async = false        
    xmlPath = Server.MapPath("/")
    xmlPath = left(xmlPath, inStrRev(xmlPath, "\")) & "config\config.xml"
    xmlDoc.load xmlPath

    set objNodes = xmlDoc.selectNodes("//database") 

    application("connectionString") = "Provider=SQLOLEDB.1;Persist Security Info=True;"_
        & "Data Source="     & objNodes.item(0).getAttribute("ip") & ";"_ 
        & "Initial Catalog=" & objNodes.item(0).getAttribute("catalog") & ";"_
        & "User ID="         & objNodes.item(0).getAttribute("id") & ";"_
        & "Password="        & objNodes.item(0).getAttribute("password")

    set objNodes = nothing
    set xmlDoc = nothing  

%>

Hmm. Immagino che non sia l'unico con un casino come questo a ripulire.

Non ho una risposta molto utile per te, ma ecco la strategia che abbiamo escogitato. Va oltre la tua domanda, ma si spera che risponda a domande che non hai ancora pensato di porre. Il compito che ti attende è enorme e vorrei darti il ??maggior numero di suggerimenti possibile sull'intero processo, non solo le stringhe di connessione.

  • riorganizza completamente il nostro codice sorgente
  • Riorganizza completamente la struttura dei file sul nostro web
  • correggi il codice poiché dobbiamo modificarlo , piuttosto che tentare di fare tutto in una volta come un grande progetto.
  • rende un obiettivo dichiarato la conversione di asp classico in asp.net (e ha ottenuto il buy-in dal nostro manager giustificando il progetto con risparmi di manodopera grazie a sviluppo / manutenzione più rapidi.)
  • standard creati e documentati per la memorizzazione di stringhe di connessione, file comuni, file CSS condivisi, ecc.
  • come parte della nostra riorganizzazione, abbiamo una cartella condivisa globale a cui possiamo fare riferimento da uno qualsiasi dei nostri progetti. Questo contiene immagini comuni, CSS, ecc. Utilizzate in più siti Web di singoli progetti, ecc.
  • abbiamo anche specificato che ogni sito Web avrà una cartella comune con una sottocartella CSS, script e img in modo che ogni progetto su cui lavoriamo sia coerente.
  • una volta completata la prima riscrittura della nostra app Web, abbiamo creato un modello di progetto per semplificare l'avvio di un nuovo progetto di sito Web.

Come effetto collaterale di tutto il lavoro che abbiamo svolto, abbiamo passato due aggiornamenti in Visual Studio in modo molto indolore semplicemente usando le procedure guidate di conversione. Passare da VS 2003 a VS 2005 e poi a VS2008 è stato indolore.

Inoltre, la nostra scelta nel controllo del codice sorgente è stata fatta in base a come volevamo risolvere il pasticcio. Stavamo usando TFS, ma eravamo limitati dalla relazione tra progetti TFS e soluzioni VS. Abbiamo scoperto che l'utilizzo di Subversion ci ha permesso una maggiore flessibilità rispetto a TFS, quindi siamo stati in grado di strutturare la nostra struttura di directory del codice sorgente in un modo molto più gestibile di quanto TFS avrebbe consentito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top