Godaddy Windows IIS7虚拟主机discuz 7.2伪静态设置(免费空间同样适用)

一直以为GodaddyWindows主机是不支持网址重写(俗称伪静态,英文原名为URLreWrite)的功能,尝试多次也都失败收场,最近在折腾discuz,考虑到discuz X系列刚出不久,还是7.2比较成熟,不是说产品,而是说周边。其实一直以为不支持的原因,也是以为是免费空间,也就不敢要求那么多,不过今天还是找了一些,都是失败,但是终于成功了一次……

把下面的内容,复制到记事本里,保存为web.config然后放到discuz所在的文件夹就可以了,web.config是IIS7和以上版本才支持的,所以如果你的Godaddy的Windows空间的IIS版本不是6.0而是7.0,那就不能用啦,好啦,不啰嗦了,下面是代码

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 17">
<match url="^archiver/((fid|tid)-[\w\-]+\.html)$" ignoreCase="false" />
<action type="Rewrite" url="archiver/index.php?{R:1}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 18">
<match url="^forum-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="forumdisplay.php?fid={R:1}&amp;page={R:2}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 19">
<match url="^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="viewthread.php?tid={R:1}&amp;extra=page\%3D{R:3}&amp;page={R:2}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 20">
<match url="^space-(username|uid)-(.+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="space.php?{R:1}={R:2}" appendQueryString="false" />
</rule>
<rule name="Imported Rule 21">
<match url="^tag-(.+)\.html$" ignoreCase="false" />
<action type="Rewrite" url="tag.php?name={R:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true" />
</system.webServer>
<system.web>
<customErrors mode="Off" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />
</system.web>
</configuration>

IIS网址重写插件IIRF(Ionic’s Isapi Rewrite Filter)的介绍和使用方法

介绍

IIRF(Ionic's Isapi Rewrite Filter)是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新编译)开发。它可以运行在IIS5.0至IIS7.0,支持ASP,ASP.NET(ASPX),PHP等许多格式。相对比ASP.NET2.0自带的URL重写,具有更好的性能和许多我们所需要特性,重要的一点在于:它可以支持无扩展名的URL(例如:www.x2009.net/****,你无需在创建一个默认的default.aspx文件,IIRF自动会帮你解析),让URL更加的方便我们记忆,也能进一步提高搜索的排名?IIRF能够在aspnet_isapi提前捕获我们所请求的URL进行处理,如果我们访问www.x2009.net/a.aspx,需要获取www.x2009.net/a.htm,步骤需要(iis-aspnet_isapi),通过IIRF,我们可以直接跳aspnet_isapi.dll,直接访问a.htm,要知道,这种方式在ASP.NET是无法实现的。

IIRF跟ASP.NET重写URL一样,它也是基于正则的方式来匹配,具有LOG记录,请求的条件判断。还是进入正题吧。

安装

IIRF安装需要我们手动操作来完成。不过。也是很方便了。

1 将IsapiRewrite4.dll, IsapiRewrite4.ini复制到c:\windows\system32\inetsrv(你也可以复制到其它适当的文件夹下面)。

IsapiRewrite4.ini是IIRF配置文件,每次该文件更改之后,IIRF会自动重新加载该文件,无需重启IIS来重新加载配置,如果您修改后INI文件后格式不正确,IIRF将会自动获取最后正确加载的配置文件。

2 打开IIS管理器,选择“默认网站”,右击“属性”,选择“ISAPI筛选器”,点击“添加”,输入筛选器名称:Ionic Rewriter,可执行文件选择上面复制到c:\windows\system32\inetsrv下面的IsapiRewrite4.dll文件,点“确定”。

3重启IISADMIN service服务。(在计算机管理----windows服务里面)

4 完成。

日志IIRF能够将INI配置文件加载,用户的URL请求记录都会保存到指定的日志文件里。因为它具有很大的性能开销,因此建议将它日志的记录等级设为0,只有

 

为了方便调试的时候时候,可以设置为5,

RewriteLog <filename stub>  保存的日志路径,如 c:\temp\iirfLog.out

RewriteLogLevel {0,1,2,3,4,5} 日志的等级,默认值为0

0 –不会记录日志

1- 少许的日志

2-  比较多的日志

3- 比较详细的日志

4- 详细的日志(4),并会跟踪server variable和替换的字符串。

5- 详细的日志(5),包括日志文件更改的事件,建议方便调试的时候使用

正则

正则的语法跟.NET一样,只不过是格式不一样而已。

格式

RewriteRule <url-pattern> <replacement-string>   [<modifiers>]

url-pattern:匹配的正则表达式(必需)

replacement-string:要替换的字符串(必需)

modifiers:有关对RewriteRule的操作标记。可选选项。在下面我会说明

默认下IIRF的url-pattern,replacement-string正则的前面已经带了主机头的。

为了方便描述,直接看几个示例(以下示例基本全部来源IIRF文档)

RewriteRule  ^/original/(.*).php  /modified/$1.aspx

源:https://www.x2009.net/original/index.php

目标:https://www.x2009.net/modified/index.aspx

RewriteRule  ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG)   /chiesa/pics.aspx?d=$1&p=$2.$3

源:https://www.x2009.net/dinoch/album/30/1.jpg

目标:https://www.x2009.net/chiesa/pics.aspx?d=30&p=1.jpg

比较简单,主要还在于modifiers的功能。下面列举了它的所有值,允许组合(如[R,L])。

   R = Redirect(URL跳转到<replacement-string>地址)

   NF = Not found(返回404错误给用户,但该文件并未移除,还是保留在网站中)

   L = Last test if match(如果已经匹配,将不在继续匹配下去)

   F = Forbidden(跟NF标志相似,)

   I = Do case-insensitive matching

   U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服务器变量中。)

[R]  or [R=code]

就像跟我们在ASP.NET使用的Redirect方法一样,重新改变浏览器的方向,跳转到新的指定的URL中。

[R=code]允许我们指定特定的HTTP状态返回码。只能介于301到399。如果超出这个范围。默认会是使用302状态。

RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]

源:https://www.x2009.net/goto.aspx?r=http://www.google.com/

目标:http://www.google.com

[L]

上面已经简单介绍过。不在说明

[NF]

上面已经简单介绍过。它还可以跟RewriteCond一起配合,来实现自定义的404错误请求。

特别要注意,你所要匹配的文件必须存在,替换的字符串不允许是存在文件名

RewriteRule ^/1008.aspx$ /1.aspx [NF]

1008.aspx文件需要存在,1.aspx不存在,否则无法正常达到我们的结果。

(很奇怪,我不知道是不是我搞错了。但我最终测试的结果确实是这样,文档也没详细说明过,有知道的朋友可以告诉我一下原因)

[F]

不在说明。

[I]

模糊匹配

[U]

保存原始的url到HTTP_X_REWRITE_URL服务器变量中。

在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]获取原始值。

RewriteCond

RewriteCond <test-string> <pattern> [<modifier flag[,...]>]

类似于条件判断,并且允许多个条件,OR,AND。只有当RewriteCond的Server Variable 匹配所指定的正则表达,RewriteRule才会执行。比如:

RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$

RewriteRule ^/(.*).aspx$ /$1.aspx

如果我们访问网站的地址的IP来源于127.0.0.1,那么,允许 RewriteRule ^/(.*).aspx$ /$1.aspx

RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$ [OR]

RewriteCond %{REMOTE_ADDR} ^(192.168.0.10)$

RewriteRule ^/(.*).aspx$ /$1.aspx

添加了OR来多个条件判断

RewriteCond %{REMOTE_ADDR}   ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$

RewriteRule  ^/(?!redirected.htm)(.*)$      /redirected.htm

Modifier flags有二个值

I=模糊匹配

OR=逻辑判断

从IIRF的RewriteCond的功能上来说,确实很灵活,不知道跟IIS7的重写怎么样,嘻嘻。还没瞧见过呢*^_&。另外。RewriteCond的[Patterns]可以带下面几个参数

-d

  Treats the TestString as a pathname and tests if it exists,

  and is a directory.

TestString是一个路径名称,并且存在这个路径

-f

  Treats the TestString as a pathname and tests if it exists and

  is a regular file.

TestString是一个路径名称,并且是一个存在的文件

  -s

  Treats the TestString as a pathname and tests if it exists and

  is a regular file with size greater than zero.

TestString 是一个路径名称,并且存在文件超过0字节

如文档所使用的例子

(1)RewriteCond %{HTTP_URL}             (/|\.htm|\.php|\.html|/[^.]*)$   [I] )

(2)RewriteCond %{REQUEST_FILENAME}     !-f

(3)RewriteCond %{REQUEST_FILENAME}     !-d                                 
(4)RewriteRule ^.*$                    /index.aspx                      [U,L]

(1)如果URL是以htm,php,html(模糊匹配),

(2)URL不是存在文件

(3)URL不是请求的路径

(4)将所有请求跳转到index.aspx,保存原始的URL,之后不在对此进行匹配

在如

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*

RewriteRule  ^/$                 /homepage.max.html  [L]

IIRF其它配置属性

IterationLimit {integer}从指定的integer后开始匹配RewriteRule组。如果超出RewriteRule个数,默认将会从第8个开始。

MaxMatchCount {integer} RewriteRule组的总个数。

RewriteLog <filename stub> 日志路径

RewriteLogLevel {0,1,2,3,4,5} 日志的等级

IIS站点/虚拟目录中访问共享目录(UNC)以及建立后的应用程序的信任级别问题

UNC是 Universal Naming Convention 的简称,也叫通用命名规范、通用命名约定。
网络(范指局域网)上资源的完整位置名称。
格式为 \\servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,如:\\servername\sharename\directory\filename
亦可作为 \\serverip\sharename 格式,其中 serverip 是服务器的IP地址,sharename 是共享资源的名称。
同样也可以包括共享名称下的目录路径,如:\\serverip\sharename\directory\filename

本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本。

通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候,会遇到如何把多台服务器的资源合并到一起的问题。如何让A服务器的站点,访问B服务器内的资源(如:音乐、视频等)。
当然,我们可以使用 http 协议来实现。在B服务器内建立一个资源站点,然后A服务器的站点直接通过http方式请求B服务器内的资源站点来获得资源,有时候这样做不是我们想要的效果。
设想,能否将B服务器的资源共享到A服务器中来,作为A服务器站点中的一个虚拟目录呢?
Linux中,我们可以使用 NFS 很方便的达到这个目的,同样,在IIS中也是同样可行的,请见下文中的详细描述。

准备工作
1.共享资源服务器为 ShareServer,IP地址为:192.168.100.10;
2.Web服务器为 WebServer,IP地址为:192.168.100.20

详细步骤:
一、共享账户的建立
1.在 WebServer 上建立一个用户名,方便使用该用户读取 ShareServer 上的共享目录,为了web文件能正常运行,同时又避免使用户拥有过高的权限,我们可以直接把该用户归入 Guests(win2003中) 组,或者 IIS_IUSRS(win2008中) 组内,这样就一举多得了。我这里建立的用户名为 IIS_ShareUser ,密码为 123456;
2.在 ShareServer 中也建立一个同名同密码的用户(必须一致,否则在UNC验证的时候会无法登陆)。这里用户名也应该为 IIS_ShareUser ,密码为 123456,也归入Guests组中;

二、共享位置的建立
1.ShareServer 中使用文件夹共享工具,共享出一个目录,共享名为 public ,共享权限设置为 Administrators 组 读取+写入,IIS_ShareUser 用户 读取(如果需要存东西,就加上 写入 权限);
这里 Administrators 用户必须拥有 读取+写入 权限,否则在 WebServer 里使用IIS直接设置的时候会提示无法保存设置。
共享位置的文件夹安全设置也必须加入 IIS_ShareUser 的 读取运行 权限,另外还需要加入IIS进程用户的 读取运行 权限,这里不再描述运行IIS站点所需要的 文件夹安全 权限设置。

三、IIS中引用共享目录
1.WebServer 中IIS里建立站点或虚拟目录,路径指向 \\192.168.100.10\public ,连接认证用户手动输入为 IIS_ShareUser ,密码 123456。
当第1步完成的时候,您已经通过web方式访问该站点或虚拟目录中的来自 ShareServer 共享目录的资源,但是 ASP.Net 还没有权限执行。
2.ASP.Net的权限设置
从站点根目录下打开 web.config 文件,在 <system.web> 节点以内,加入以下内容:
<identity impersonate="true" userName="IIS_ShareUser" password="123456" />
其实就是修改了 ASP.Net 执行的认证方式,把认证方式修改为 ASP.Net模拟用户 ,这样就能让 ASP.Net 通过刚才建立的共享账号执行和访问 ShareServer 中的资源了。

以上摘自[这里]

但是! 这还只是可以访问资源文件,对于aspx这样的需要执行的文件来说,还会出现应用程序的信任级别问题,说信任已失效之类的错误.

MS的网站上给出来解决方法,

http://support.microsoft.com/default.aspx?id=320268

可能对于其他人来说可以执行成功, 因为在网上也看到很多人发了日志出来. 但对于我来说, 怎么也成功不了.

后来找了很多资料, 发现原来还差一个参数.

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on 以上是MS站上给出的命令, 以下是我的(注意红色的参数): c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -q -m -ag 1 -url "file:////\\ computername \ sharename \ *"FullTrust -exclusive on

搞了一晚上终于搞定了. 立即记下来. 呵呵

在电脑上安装IIS或者PWS的方法Windows 95/98/NT/2000/XP/2003

如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP 。要做点这一点,你就必须安装微软的 PWS 或者 IIS 。

如何在自己的 PC 上运行 ASP

如果没有一个外部的服务器,你可以在自己的 PC 上运行 ASP。要做点这一点,你就必须安装微软的 PWS(Personal Web Server) 或者 IIS (Internet Information Services)。

假如你希望很好地学习 ASP 的话,我们推荐你至少要使用 Windows 98 的第二版。

如果有可能的,Windows 2000 或者更高的版本是最好的选择(包括Windows XP Professional、Windows Server 2003 或者 windows vista 操作系统)。

如何在 Windows 2000 上安装 IIS 并运行ASP

  1. 开始按钮 - 设置 - 控制面板
  2. 在控制面板中选择添加/删除程序
  3. 在添加/删除程序中选择添加/删除Windows组件
  4. 在向导窗口中选中 Internet 信息服务,然后点击确定
  5. Inetpub 文件夹会在硬盘中被创建
  6. 打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
  7. 在 wwwroot 下创建一个新文件夹,比如 "MyWeb"
  8. 使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
  9. 确保你的服务器正在运行 - 安装程序会在系统托盘创建一个IIS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
  10. 打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。

如何在 Windows XP Professional 上安装 IIS 并运行 ASP

  1. 在 CD-Rom 驱动器中插入 Windows XP Professional CD-Rom
  2. 开始菜单设置控制面板
  3. 在控制面板选择添加/删除程序
  4. 在添加/删除程序中选择添加/删除 Windows 组件
  5. 在向导窗口中选中 Internet Information Services,然后点击确定
  6. Inetpub 文件夹会在硬盘中创建
  7. 打开 Inetpub 文件夹,找到名为 wwwroot 的文件夹
  8. 在 wwwroot下创建一个新文件夹,比如 "MyWeb"
  9. 使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
  10. 确保你的服务器正在运行,使用下面的方法确认它的运行状态:进入控制面板,然后是管理工具,然后双击“IIS 管理器”图标。
  11. 打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。

提示:Windows XP Home Edition 无法运行 ASP。

如何在 Windows Server 2003 上安装 IIS 并运行 ASP

  1. 当你启动 Windows Server 2003 后,会看到服务器管理向导
  2. 如果向导没有显示,可以打开管理工具,然后选择“配置您的服务器向导
  3. 出现提示后,点击下一步
  4. 随后会出现一个“预备步骤”的提示,点击下一步,随后系统自动搜索已在本机安装了的系统服务组件
  5. 在随后出现的服务器角色窗口中选择应用程序服务器,然后点击下一步
  6. 选中启用ASP.NET
  7. 随后向导会提示这个组件的大概安装过程,请点击下一步
  8. 现在,向导会请求 Server 2003 CD。请插入CD后继续运行向导。
  9. 最后,向导会提示“此服务器目前是一台应用程序服务器”。
  10. 点击完成后,你会发现“应用程序服务器”已在管理你的服务器角色窗口中出现
  11. 点击“管理此应用程序服务器”会打在应用程序服务器管理控制台(MMC)
  12. 展开Internet 信息服务 (IIS)管理器,然后展开你的服务器,然后是站点文件夹。
  13. 你会看到默认的网站,并且它的状态应该是运行中。
  14. 在Internet 信息服务 (IIS)管理器中点击“Web服务扩展”,你会看到 Active Server Pages 是被禁止的。
  15. 选中Active Server Pages,然后点击允许按钮,这样 ASP 就被激活了!

如何在老版本的 Windows 操作系统中运行 ASP

如何在 Windows 95 上安装 PWS 并运行 ASP

Windows 95 不包含 PWS!!

要想在 Windows 95 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。

下载"Windows NT 4.0 Option Pack"

如何在 Windows NT 上安装 PWS 并运行 ASP

Windows NT 同样不包含 PWS!!

要想在 Windows NT 上运行 ASP,就必须从微软的站点下载 “Windows NT 4.0 Option Pack”。

下载"Windows NT 4.0 Option Pack"

如何在 Windows 98 上安装 PWS 并运行 ASP
  1. 打开 Windows 98 CD 上的 Add-ons 文件夹,找到PWS文件夹并运行其中的 setup.exe 文件。
  2. 安装程序会在硬盘创建一个 Inetpub 文件夹。打开这个文件夹,找到 wwwroot 文件夹。
  3. 然后在 wwwroot 文件夹下面创建一个新的文件夹,比如 "MyWeb"。
  4. 使用文本编辑器编写几行 ASP 代码,将这个文件取名为 "test1.asp" 保存在 "MyWeb" 文件夹。
  5. 确保你的服务器正在运行 - 安装程序会在系统托盘创建一个PWS的图标。点击这个图标,然后在出现的新窗口中按开始按钮。
  6. 打开浏览器,在地址栏键入 "http://localhost/MyWeb/test1.asp",就可以看到你的第一个 ASP 页面了。
如何在 Windows ME 上安装 PWS 并运行 ASP

Windows ME 同样不包含 PWS!!

IIS500.100错误:HTTP 错误 500.100 – 内部服务器错误 – ASP 错误的详细解决办法

这个问题我也遇到过,这不是你的页面错误的问题,是因为你的C盘是NTF格式的,解决办法:
出现这样的情况是主要是由于IWAM账号(在我的计算机即是IWAM_MYSERVER账号)的密码错误造成了HTTP 500内部错误。

排除了一些基本的可能性外,我在网上搜寻了一下解决办法。最后终于解决了这个问题,在此分享一下。

先启动MSDTC服务,什么是MSDTC服务?显示名称:Distributed Transaction Coordinator;描述:协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止此服务,则不会发生这些事务。如果禁用此服务,显式依赖此服务的其他服务将无法启动。
CMD下net start msdtc
结果显示“distributed transaction coordinator 服务不能启动”。
解决方法:
把 C:\WINDOWS\system32\dtclog 这个目录重命名(如果有的话,没有就直接省去这一步),然后重新建立该目录。
在命令行下: msdtc -resetlog
再net start msdtc,显示服务启动成功了。

然后右键我的电脑--管理--本地用户和组,给IUSR_机器名和IWAM_机器名两个用户设置密码,要一样。

接着开始--运行--打cmd,
然后cd C:\Inetpub\AdminScripts,
然后cscript.exe adsutil.vbs set w3svc/wamuserpass 你设置的密码,
然后cscript.exe adsutil.vbs set w3svc/anonymoususerpass 你设置的密码。

看一下,行了没有?如果还不行,那么
cscript.exe synciwam.vbs -v,
然后iisreset。

到一步还是不行,最后在CMD下执行以下命令:
cd %windir%\system32\inetsrv

rundll32 wamreg.dll, CreateIISPackage

regsvr32 asptxn.dll

关闭所有的IE窗口后重新打开再执行,OK了!!
如果还是不行,可能是数据的权限问题了,解决办法:

打开c:windows/temp,添加everyone权限.

补充WINDOWS XP 默认情况下看不到安全权限,修改:文件夹选项-查看-将"使用简单文件共享勾去".再点temp文件右键"属性",就可以看到"安全"了.

IIS提示“Provider 错误 ‘80004005’ ”如何处理

Provider 错误 '80004005'
未指定的错误
/#include/conn.asp,行 4

 

在编写WEB应用程序的过程中,我们常常要跟数据库打交道,例如我们日常经常用的数据库ACCESS、SQL SERVER等。在连接这些数据库的时候,系统往往会给我们一些象这类“80004005”错误,这些五花八门的错误信息很另人头痛。为了方便网友解决这类问题,本文将详细的介绍和解答这类问题。
[错误信息]
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中对数据库所在目录
没有正确的权限.

[解决方法]
1、检查文件和目录的权限. 保证Evryone能够在该目录中有新建和删除临时文件的权限。
2、检查数据源文件(DSN)是否被别的程序标志在使用中,这些程序一般都是Visual InterDev,关闭任何一个正在InterDev中打开和数据库连接的项目。
3、检查ACCESS中的某个表是否在这时已连在一个网络服务器上。
[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file
already in use.
[原因]
要连接ACCESS数据库这时正在被使用使数据库被锁定,导致无法访问。

[错误信息]
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中初始化的Application连接字符串 ,而这时global.asa文件却没有正常工作。

[解决方法]

检查赋值时是否正确,在asp中加入下面的代码:
<%= "'auth_user' is " & request.servervariables("auth_user")%>
<P>
<%= "'auth_type' is " & request.servervariables("auth_type")%>
<P>
<%= "connection string is " & session("your_connectionstring")%>
<P>
还有一个原因就是在ConnectString中加入了空格,例如
DSN = MyDSN; Database = Pubs;
试试改成下面这个样子:
DSN=MyDSN;Database=Pubs;
如果是global.asa还没有被运行,检查该文件是否在运用程序的根目录中,或者是虚拟目录的根目录中。
还有可能错误出现的原因是DSN名称没找着,这可以采用我提供的id=36767的办法解决。最后是检查是否安装了最新的驱动程序,既是否是最新的MDAC版本。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not ??
[原因]
这个错误有可能是出现在你的计算机上软件安装(或则反安装)的顺序上。如果ODBC的版本不一致的话,就会发生该错误。
[解决方法]

办法是安装最新版本的MDAC。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Access 97 ODBC driver Driver]General error Unable to open
registry key 'DriverId'.
[原因]
这个错误发生在从注册表中读取数值的时候。 使用regedit32.exe检查注册表的权限。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][dbnmpntw]ConnectionOpen (CreateFile()).
[原因]
原因之一:当一个数据库中包含有分别在不用机器上的许可关系时,这也可能发生在同一台机器上,当给一个关系设置了UNC路径,而另一个关系却是本地路径。
原因之二:当用户使用IIS匿名帐号登录后,对本地这台机器而言他是有权的,但是对于一个UNC路径的机器,另外这台机器是不会认为你当前匿名登录的帐号在它那上面也是合法的。这样它就不允许你访问它上面的资源,导致错误。

[解决方法]
1、在IIS工具中,改变IIS匿名帐号成另外一个基于域的帐号。(也就是不使用匿名登录)
2、或则在那台你要访问资源的机器上也创建一个和当前匿名帐号同样的帐号,使用同样的密码。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005' Microsoft][ODBC
Microsoft SQL Driver] Logon Failed()
[原因]
该错误是由SQL Server产生的,当它不接受或则不能够认识这个登录帐号的时候,或者没有使用管理员身份登录,
也可能是在NT中没有SQL影射帐号造成的。
[解决方法]
用系统管理员帐号(SA)登录,一般密码应该为空.注意,这时必须使用CoonectString而不能够使用DSN文件。因为DSN中没有保存用户名和密码。检查NT是否给SQL映射了帐号。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server] Login failed- User: Reason:
Not defined as a valid user of a trusted SQL Server connection.
[原因]
该错误是由SQL Server产生的,当它不接受或则不能够认识这个登录帐号的时候,或者没有使用管理员身份登录,
也可能是在NT中没有SQL影射帐号造成的。
[解决方法]

在SQL Server的Enterprise Manager中,选择Server/SQL Server/Configure[ASCII
133]/Security Options/Standard。如果是运行在IIS4中,取消选择该项目的Password Synchronization选项。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't lock file.
[原因]
也许是没有正确的权限生成Access数据库的锁定文件(.ldb)
默认时,该文件和你的数据库是同一个目录的。
给匿名帐号全权访问数据库共享目录的权限。
有时是因为文件是因为共享时有意使用了只读的权限限制。

[解决方法]
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Mode = adModeShareDenyWrite '8

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] '(unknown)' isn't a valid
path. Make sure that the path name is spelled correctly and that you are
connected to the server on which the file resides.
[原因]
路径非法。最可能发生在当Global.asa和CoonecntString被使用到另外一台机器上的时候。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server] The query and the views in
it exceed the limit of 16 tables.

[原因]
对查询有限制。

[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][DBMSSOCN] General network error. Check
your network document
[原因]
装有SQL Server的机器被改名,但数据库名(DSN)还使用了原来的机器名。

[解决方法]

重新设置DSN。