ASP 包含文件中的路径问题和使用单一数据库连接文件的解决方案

  啥都不说了,直接奉献原代码

  

复制代码 代码如下:

  '==========注意===============================================

  ' 1、网站所在文件夹的名字不能为“root”

  ' 2、网站所在文件夹的名字,物理路径中不允许出现重复此文件夹名,如F:\t\t,t为网站所在文件夹名,这种情况会出错

  '=============================================================

  Dim dbPath,dbName,Db,ConnStr,WebSiteFolderName

  on error resume next

  WebSiteFolderName="WeldSiteBuilder"

  dbPath = "_sitedata\" '注意是反斜杠,且只有末尾有

  dbName = "acteedata.mdb" '数据库名称

  Db=GetSitePhysicalPath(WebSiteFolderName) & dbPath & dbName

  'response.Write("当前数据库物理路径:"&server.mappath(db))

  'response.Write("<hr>")

  'response.Write("当前请求访问的页面路径:"&request.ServerVariables("URL"))

  'response.Write("<hr>")

  'response.Write("当前站点的根路径:"&request.ServerVariables("APPL_PHYSICAL_PATH"))

  'response.Write("<hr>")

  'response.Write("当前站点的路径状况:"&request.ServerVariables("APPL_MD_PATH"))

  'response.Write(db)

  'response.End()

  '======================

  Set conn=Server.CreateObject("ADODB.Connection")

  ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Db

  Conn.Open ConnStr

  If Err Then

  Err.Clear

  Set Conn = Nothing

  Response.Write "数据库连接错误!"

  Response.End

  End If

  Sub CloseConn()

  conn.close

  set conn=nothing

  end Sub

  '获取网站所在目录的绝对路径(带“\”号)

  Function GetSitePhysicalPath(WSFN)

  dim APPL_MD_PATH,APPL_MD_PATHArray,Path,WSPP

  WSPP=request.ServerVariables("APPL_PHYSICAL_PATH")'默认网站是在根目录下运行

  APPL_MD_PATH=request.ServerVariables("APPL_MD_PATH")

  APPL_MD_PATHArray=split(APPL_MD_PATH,"/")

  Path=APPL_MD_PATHArray(UBound(APPL_MD_PATHArray))

  if UCase(Path)="ROOT" then '判断网站是不是在独立的应用程序下运行

  '再判断网站是不是在某个文件夹下运行

  if InStr(WSPP,WSFN)=0 then '网站在根目录下的一个文件夹下运行

  '根据受访页面的地址拼出网站所在文件夹的地址

  dim CurrentUrl,NameArray

  CurrentUrl=request.ServerVariables("URL")

  NameArray=split(CurrentUrl,"/")

  for i=LBound(NameArray) to UBound(NameArray)

  if UCase(NameArray(i))=UCase(WSFN) then

  for j=0 to i

  WSPP=WSPP+NameArray(j)+"\"

  next

  exit for

  end if

  next

  else '表明网站是在根目录下运行

  '什么都不必做,返回值已经初始化了

  end if

  else '表明网站是在虚拟目录下运行

  '什么也不做,返回值已经初始化了

  end if

  WSPP=replace(WSPP,"\\","\")

  GetSitePhysicalPath=WSPP

  End Function

  PS:以上只是针对Access数据库解决的包含路径不对的问题,使站点能公用一个数据库连接文件,任意一个文件包含它,数据库都能正常打开,并且不必理会网站是怎么运行的(根目录下运行,虚拟路径下运行,根目录+网站所在目录下运行)。