在同时包含经典ASP和ASP.NET1.1代码的项目中管理连接字符串的最佳方法?
我继承了一个项目,它主要是一个经典的ASP应用程序;然而,应用程序中混杂着一些ASP.net页面。有些ASP.net页面是1.1版,不使用代码隐藏模型 经典的ASP页面有许多/include目录,其中有用于数据库连接的文件。ASP.Net页面的代码中硬编码了连接字符串 我正试图清理这些乱七八糟的连接字符串,以便更容易跨开发环境进行管理 有没有人对我如何能够有效地做到这一点有任何建议,这将适用于经典ASP和ASP.Net页面在同时包含经典ASP和ASP.NET1.1代码的项目中管理连接字符串的最佳方法?,asp.net,asp-classic,connection-string,Asp.net,Asp Classic,Connection String,我继承了一个项目,它主要是一个经典的ASP应用程序;然而,应用程序中混杂着一些ASP.net页面。有些ASP.net页面是1.1版,不使用代码隐藏模型 经典的ASP页面有许多/include目录,其中有用于数据库连接的文件。ASP.Net页面的代码中硬编码了连接字符串 我正试图清理这些乱七八糟的连接字符串,以便更容易跨开发环境进行管理 有没有人对我如何能够有效地做到这一点有任何建议,这将适用于经典ASP和ASP.Net页面 谢谢在asp经典网站的根目录下放置一个web.config文件。没有代码
谢谢在asp经典网站的根目录下放置一个web.config文件。没有代码隐藏(并且假设任何地方都没有虚拟目录/应用程序)的ASP.net页面将使用该web.config文件。您可以在其中放置连接字符串。你可能会有两组字符串,但这比更多的好。如果你真的想,你可以写一些asp经典代码来读取配置文件。嗯。我想我不是唯一一个有这样混乱需要清理的人 我没有一个非常有用的答案给你,但这是我们提出的策略。它超越了你的问题,但希望它能回答你还没想过要问的问题。摆在你们面前的任务是艰巨的,我想在整个过程中给你们尽可能多的提示,而不仅仅是连接字符串
- 完全重新组织我们的源代码
- 完全重组我们网站上的文件结构
- 修复代码,因为我们需要修改它,而不是试图把它作为一个大项目一次性完成
- 将经典asp转换为asp.net作为一个明确的目标(并通过更快的开发/维护证明该项目节省了人力,从而得到了我们经理的认可。)
- 创建并记录用于存储连接字符串、公共文件、共享CSS文件等的标准
- 作为重组的一部分,我们有一个全局共享文件夹,可以从我们的任何项目中引用。它包含跨多个单独项目网站使用的公共图像、CSS等
- 我们还指定每个网站都有一个带有CSS、脚本和img子文件夹的公共文件夹,这样我们处理的每个项目都是一致的
- 一旦我们完成了第一个web应用程序的重写,我们就创建了一个项目模板,使启动一个新的web站点项目变得非常简单
此外,我们在源代码控制方面的选择是基于我们希望如何修复混乱。我们正在使用TFS,但受到TFS项目和VS解决方案之间关系的限制。我们发现使用Subversion比TFS具有更大的灵活性,因此我们能够以比TFS更易于管理的方式布置源代码目录结构。这种方式的重点是将连接字符串文件与源代码版本控制系统(如svn)的webroot隔离开来 档案:
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>
子应用程序_OnStart()
server.execute(“/onInit.asp”)
端接头
子应用程序_OnEnd()
端接头
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
%>
本文()包含了一些有趣的方法。