Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同时包含经典ASP和ASP.NET1.1代码的项目中管理连接字符串的最佳方法?_Asp.net_Asp Classic_Connection String - Fatal编程技术网

在同时包含经典ASP和ASP.NET1.1代码的项目中管理连接字符串的最佳方法?

在同时包含经典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应用程序;然而,应用程序中混杂着一些ASP.net页面。有些ASP.net页面是1.1版,不使用代码隐藏模型

经典的ASP页面有许多/include目录,其中有用于数据库连接的文件。ASP.Net页面的代码中硬编码了连接字符串

我正试图清理这些乱七八糟的连接字符串,以便更容易跨开发环境进行管理

有没有人对我如何能够有效地做到这一点有任何建议,这将适用于经典ASP和ASP.Net页面


谢谢

在asp经典网站的根目录下放置一个web.config文件。没有代码隐藏(并且假设任何地方都没有虚拟目录/应用程序)的ASP.net页面将使用该web.config文件。您可以在其中放置连接字符串。你可能会有两组字符串,但这比更多的好。如果你真的想,你可以写一些asp经典代码来读取配置文件。

嗯。我想我不是唯一一个有这样混乱需要清理的人

我没有一个非常有用的答案给你,但这是我们提出的策略。它超越了你的问题,但希望它能回答你还没想过要问的问题。摆在你们面前的任务是艰巨的,我想在整个过程中给你们尽可能多的提示,而不仅仅是连接字符串

  • 完全重新组织我们的源代码
  • 完全重组我们网站上的文件结构
  • 修复代码,因为我们需要修改它,而不是试图把它作为一个大项目一次性完成
  • 将经典asp转换为asp.net作为一个明确的目标(并通过更快的开发/维护证明该项目节省了人力,从而得到了我们经理的认可。)
  • 创建并记录用于存储连接字符串、公共文件、共享CSS文件等的标准
  • 作为重组的一部分,我们有一个全局共享文件夹,可以从我们的任何项目中引用。它包含跨多个单独项目网站使用的公共图像、CSS等
  • 我们还指定每个网站都有一个带有CSS、脚本和img子文件夹的公共文件夹,这样我们处理的每个项目都是一致的
  • 一旦我们完成了第一个web应用程序的重写,我们就创建了一个项目模板,使启动一个新的web站点项目变得非常简单
作为我们所做工作的一个副作用,我们在VisualStudio中通过使用转换向导轻松地完成了两次升级。从VS2003到VS2005,再到VS2008都是无痛的


此外,我们在源代码控制方面的选择是基于我们希望如何修复混乱。我们正在使用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  

%>

本文()包含了一些有趣的方法。