¿La mejor manera de administrar cadenas de conexión en un proyecto que contenga tanto ASP clásico como ASP.Net 1.1?

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

Pregunta

Tengo un proyecto que he heredado que es principalmente una aplicación ASP clásica; sin embargo, entremezclados en la aplicación hay un puñado de páginas ASP.net. Algunas de las páginas ASP.net son 1.1 y no usan un código detrás del modelo.

Las páginas ASP clásicas tienen varios directorios / include donde hay un archivo para conexiones de base de datos. Las páginas ASP.Net tienen la cadena de conexión codificada en su código.

Estoy tratando de limpiar este lío de cadenas de conexión para que sea más fácil de administrar en todos los entornos de desarrollo.

¿Alguien tiene alguna recomendación sobre cómo puedo hacer esto de manera efectiva que funcione tanto para las páginas ASP clásicas como para ASP.Net?

Gracias

¿Fue útil?

Solución

Coloque un archivo web.config en la raíz del sitio asp classic. Las páginas ASP.net sin código detrás (y suponiendo que no haya aplicaciones / directorios virtuales) usarán ese archivo web.config. Puedes poner cuerdas de conexión allí. Es probable que termines teniendo dos conjuntos de cadenas, pero eso es mejor que muchos más. Y si realmente quieres, puedes escribir un código asp clásico para leer ese archivo de configuración.

Otros consejos

Esta forma se centra en aislar el archivo de cadena de conexión de webroot para el sistema de control de versión de código fuente (como svn).

Archivos:

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. Supongo que no soy el único con un lío como este para limpiar.

No tengo una respuesta muy muy útil para ti, pero aquí está la estrategia que se nos ocurrió. Va más allá de su pregunta, pero con suerte responde a preguntas que aún no ha pensado hacer. La tarea que tiene ante usted es enorme, y me gustaría darle todos los consejos que pueda sobre todo el proceso, no solo las cadenas de conexión.

  • reorganiza completamente nuestro código fuente
  • Reorganice completamente la estructura de archivos en nuestra web
  • arregla el código ya que necesitamos modificarlo , en lugar de intentar hacerlo todo de una vez como un gran proyecto.
  • haga que sea un objetivo declarado convertir asp clásico a asp.net (y obtuvimos la aceptación de nuestro gerente al justificar el proyecto con ahorros de mano de obra a través de un desarrollo / mantenimiento más rápido).
  • creó y documentó estándares para almacenar cadenas de conexión, archivos comunes, archivos CSS compartidos, etc.
  • como parte de nuestra reorganización, tenemos una carpeta compartida global a la que podemos hacer referencia desde cualquiera de nuestros proyectos. Este contiene imágenes comunes, CSS, etc. que se utilizan en varios sitios web de proyectos individuales, etc.
  • también especificamos que cada sitio web tendrá una carpeta común con una subcarpeta CSS, script e img para que cada proyecto en el que trabajamos sea consistente.
  • una vez que completamos nuestra primera reescritura de la aplicación web, creamos una plantilla de proyecto para hacer que comenzar un nuevo proyecto de sitio web sea muy simple.

Como efecto secundario de todo el trabajo que hemos realizado, hemos pasado por dos actualizaciones en Visual Studio de manera muy sencilla utilizando los asistentes de conversión. Pasar de VS 2003 a VS 2005, y luego a VS2008 fue indoloro.

Además, nuestra elección en el control de la fuente se hizo en función de cómo queríamos arreglar el desastre. Estábamos usando TFS, pero estábamos limitados por la relación entre los proyectos de TFS y las soluciones de VS. Descubrimos que el uso de Subversion nos permitió una mayor flexibilidad que TFS, por lo que pudimos diseñar nuestra estructura de directorios de código fuente de una manera mucho más manejable de lo que TFS hubiera permitido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top