none
IIS7运行经典ASP程序+数据库的问题 RRS feed

  • 问题

  • 请问在 Windows Vista SP1 中的 IIS 如何运行连接有数据库的经典的 ASP 程序啊?

     

    具体细节

    电脑中有一些古老的 ASP 程序。原先在 Windows Vista 发布之时,ASP 程序就默认没有启用,但一切都早已设置好了,包括整个 IIS 已完全安装,C 盘的那个什么什么 Temp 目录的权限也设好了,父路径等也设置完了,一切都正常了,可是一年后,SP1 的发布,原先的 ASP+Access 又挂了,Microsoft Jet Database Engine 错误 '80004005' 未指定的错误,呜呜,难道又要设置哪里,请问该如何处理?

    2008年5月6日 4:01

全部回复

  • 请问你的Vista是64位的还是32位的,64位的访问有问题,32位的参考下面解决:

     1.错误信息(错误信息我不用翻译成中文了把,呵呵,大家谅解)
      Microsoft OLE DB Provider for ODBC Drivers error '80004005'
      [Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
      engine cannot open the file '(unknown)'. It is already opened exclusively
      by another user, or you need permission to view its data.

      原因:

      这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录没有正确的  权限.(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)检查文件和目录的权限. 确定你能够在该目录中有能够新建和删除临时文件的权限。

      这些临时文件其实是数据库建立在同一个目录下的文件, 但是要注意的是,有可能这些文件
    也可能建立在别的目录,例如 /Winnt.

      使用NT的文件监视程序监视文件失败时到底是访问了什么目录。
      这个NT的文件监视程序可以在这个地方下载http://www.sysinternals.com.

      如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,

      还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,
      这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。

      这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。

      还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。

      2.错误信息:

      Microsoft OLE DB Provider for ODBC Drivers error '80004005'
      [Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file
      already in use.

      原因:

      多人使用时数据库被锁定。

      3.错误信息:

      Microsoft OLE DB Provider for ODBC Drivers error '80004005'
      [Microsoft][ODBC Driver Manager] Data source name not found and no default
      driver specified. 
     
      原因:

      最可能的原因是ConnectString是一个在global.asa中初始化的Session变量,但是global.asa
    却没有正常工作。解决办法是,检查赋值时是否正确:(在你的asp中加入下面的代码)

      还有一个原因就是你在你的ConnectString中加入了多余的空格,例如

      DSN = MyDSN; Database = Pubs;
      试试改成下面这个样子:
      DSN=MyDSN;Database=Pubs;

      如果是global.asa还没有工作,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。

    2008年5月6日 4:17
  • 我用的是 Windows Vista SP1 32位的,已正常安装 IIS 及 ASP 等组件。

     

    下面是程序主要部分(inc/conn.asp):

    Code Snippet

    <%

     dim sql,conn,rs,dbpath,ldlocal,connstr

     'on error resume next

     dbpath="../database/central.mdb"
     connstr="provider=microsoft.jet.oledb.4.0; data source=" & Server.MapPath(dbpath)
     set conn=server.CreateObject("adodb.connection")
     set rs=Server.CreateObject("ADODB.RecordSet")
     conn.open connstr
    %>

     

    数据库位置:

    database/center.mdb

     

    运行(http://localhost/test/display/)时,出错显示为:

    Microsoft JET Database Engine 错误 '80004005'

    未指定的错误

    /test/inc/conn.asp,行8

     

    其中,数据库位置据检测并无错误,数据库文件所在权限也设置好了(IIS_IUSRS 拥有完全控制),IIS7 里 ASP 行为 中的将父路径已启用,路经 %windir%\ServiceProfiles\NetworkService\AppData\Local\ 也已改为 Authenticated Users 完全访问。在没有升级到 SP1 时程序一直正常,但升级后就出现了上述错误。

     

    请问应该如何解决?谢谢!

    2008年5月6日 5:15
  • 我试过在管理员模式下运行 cmd 并执行下列 ICACLS 命令,并得到以下运行结果。

     

    C:\Windows\system32>icacls %windir%\serviceprofiles\networkservice\AppData\Local
    \Temp /grant Users: (CI)(S,WD,AD,X)

    已处理的文件: C:\Windows\serviceprofiles\networkservice\AppData\Local\Temp
    已成功处理 1 个文件; 处理 0 个文件时失败

     

    C:\Windows\system32>icacls %windir%\serviceprofiles\networkservice\AppData\Local
    \Temp /grant "CREATOR OWNER": (OI)(CI)(IO)(F)

    已处理的文件: C:\Windows\serviceprofiles\networkservice\AppData\Local\Temp
    已成功处理 1 个文件; 处理 0 个文件时失败

     

    并且当我以管理员身份打开 Windows Explorer 进入 %windir%\serviceprofiles\networkservice\AppData\Local
    \ 时可以看到,其中的 Temp 文件夹属性中的安全选项卡里的 CREATOR OWNER 的权限除了特殊权限以外全部为空,而 Users 为完全访问。然而那个 ASP 仍然无法访问,错误依旧是 Microsoft JET Database Engine 错误 '80004005' 未指定的错误

     

    而我使用关闭 loadUserProfile 的方法时,却出现以下问题:

     

    C:\Windows\system32>%windir%\system32\inetsrv\appcmd set config /section:applica
    tionPools /[name='DefaultAppPool'].processModel.loadUserProfile:false

    ERROR ( hresult:80070001, message:命令执行失败。
    函数不正确。
     )

     

    在这两种方法中,我更希望使用第一种方法,然而无论使用哪种,结果我均未成功。据说 ICACLS.exe 要从网上下载,但我并不知道从哪下,在网上貌似没有搜到。

     

    请问我应该如何继续?谢谢!

    2008年5月6日 5:44
  • Thank all of you!

    它莫名其妙好了。

     

    2008年5月6日 7:43