最近在X64位系统下的IIS7下部署asp网站,出现了N多错误,通过查找,也找了N多不同的错误的处理。现把他们整合在一起,以供大家参考: Windows Server 2008 IIS7+ASP+Access 安装配置 IIS 7安装 服务器管理器->角色->添加角色->Web服务器(IIS) 添加角色向导会针对任何需要的依赖关系提示,需要添加必需的功能后才能继续安装IIS 7,然后需要选择安装的角色服务(如下图所示),确认选择安装的服务种类和设置后,即可完成IIS 7的安装。 p.s.:IIS 7的服务角色可以任意安装&&删除,完成实现模块化。 ASP+Access的安装配置 IIS 7的角色服务包含应用程序开发(ASP)即可支持ASP。 完成诸如路径设定的常规工作之后,发现我的ASP+Access站点有问题,Access数据库无法写入数据,Google之后解决。 (1)无法显示错误原因 Access数据库无法写入数据,只有如下显示,没有显示错误原因 出现“An error occurred on the server when processing the URL. Please contact the system administrator”。 顺着链接进入IIS的 blog,原因在于“scriptErrorSentToBrowser”,解决方案把scriptErrorSentToBrowser设为true即可 %windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true (2)Access数据库无法写入数据(写入、修改、删除) ADODB.Recordset 错误 '800a0cb3' 当前记录集不支持更新。这可能是提供程序的限制,也可能是选定锁定类型的限制。 解决方案: 1.应用程序池(Application Pool)由DefaultAppPool设置为Classic .NET AppPool 2.在Access数据库所在的目录添加“Authenticated Users”用户,并设置完全控制权限 让IIS7支持ASP 1. 让IIS7支持ASP Windows Vista中IIS7是默认不安装的,所以在安装完Windows Vista之后如果需要安装IIS7的话,就要自己动手了。安装的步骤为:开始》控制面板》程序》打开或关闭Windows功能》Internet信息服 务(以前操作系统版本里面的"Windows components” 在Vista里面叫做"Programs and Features")。IIS7安装时需要注意的是,如果需要ASP、ASP.NET等的支持,是需要把功能模块给装上的,默认是不安装的。 2. 解决IIS7中.mdb数据库问题。 默认装完IIS7之后,使用ASP程序会发现提示数据库连接失败,在网上找了找,说是因为MS Jet引擎改变了临时目录的位置,但是又没有对临时的存取权限,导致数据库使用失败。 给“系统盘:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加 一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。 设置权限步骤:右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编辑”》出来“Temp 的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入Authenticated Users,确定》返回到“Temp 的权限”,将Authenticated Users的权限中的完全控制给勾上,确定》确定。 链接方式: ServerPath=Server.MapPath("/xxx.mdb") connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ServerPath Set schooldb=Server.CreateObject("Adodb.Connection") schooldb.Open connstr 3. windows 2008 64位系统解决IIS7中.mdb数据库问题。 如果你使用64位系统,那可能如上办法也解决不了,原因是64位系统没有提供64位ACCESS连接的驱动,把网站对应的应用程序池中项目的“启用32位应用程序”置为“ture”。 这样就可以了。 Other tips in IIS7: a. 启用父路径。 常用的 ../ 父路径使用在IIS7里面是默认不支持的。 在iis的主页-->ASP -> 双击打开-> 启用父路径: True b. 向浏览器返回错误信息。 默认网页代码出错浏览器会出现“An error occurred on the server when processing the URL. Please contact the system administrator”。 在iis的主页-->ASP -> 双击打开->调试错误-> 将错误发送到浏览器: True Windows Vista下IIS7 安装和设置详细教程 <!--[endif]--> 一,按以下方法,已经可以完全解决IIS7的安装,同时也可以访问ASP和.NET程序了! 二,不能访问ASP+ACCESS,请将站点的应用程序池改为 三,同时应该给数据库存放的文件夹下所有文件加上读写权限!方法是:加入IUSER的完全控制权限,设置方法和以下相同! 四,动易的组件好像不是很和VISTA兼容,程序运行不长时间可能会出现IIS挂了的情况,现在还没有找到官方的使用说明! 微软的Windows Vista已经发布有一段时间了,自己也用了一段时间了,至于体会也不少,好的来说就是绝对的美观和安全。比较讨厌的就是无休止的UAC对话框,关闭它了 感觉系统安全性降低了,开启了又感觉太烦。盖茨大哥不知道平时是开UAC还是关闭UAC呢。下面我主要说一下vista程序调试的配置和IIS7.0的设 置. 一:DebugVista的一般步骤 在Vista系统中以管理员身份运行Cmd.exe 1,将当前的配置作一个Copy bcdedit /copy {current} /d DebugEntry 执行本命令后,Bcdedit会显示新的DebugEntry的GUID 2,开启DebugEntry的调试设置 bcdedit /debug {DebugEntry的GUID} on Vista当前版本默认的调试设置是com1,baudrate 115200 相对的WIndbg的命令行为(高版本的Windbg的可通过界面设置,快捷键为Ctrl+k) D:\windbg\windbg.exe -k com:port=com1,baud=115200 如果使用虚拟机的话,命令行如下: D:\windbg\windbg.exe -k com:pipe,port=\\.\pipe\com_1 符号路径的命令行如下: -y D:\localSymbols;srv*D:\localSymbols*http://msdl.microsoft.com/download/symbols 3,如果需要改变调试方式可以进行编辑 bcdedit /dbgsettings 1394 channel:1 ;开启1394卡1通道调试设置 相对的WIndbg的命令行为(高版本的Windbg的可通过界面设置,快捷键为Ctrl+k) D:\windbg\windbg.exe -k 1394:channel=1 这是我从xikug的网站上转来的。希望大家去它那里还能下载到附件(链接:http://www.debugman.com/read.php?tid=367&keyword=vista) 附件中是 Subverting VistaTM Kernel For Fun And Profit 的PPT,其中提供了两部分内容,第一部分说如果在无需Reboot在Vista X64中载入未签名的代码,第二部分,是在X64创建免检测的malware 其中的技术不是什么特别高明的技术,只算是一种思路吧. 二:iis7.0的配置: 1:安装iis7.0:进入Vista的 控制面板,选择左侧的 打开或关闭Windows功能 ,单击后会出现安装Windows功能的选项菜单,因为Vista的IIS7的默认安装选项中是不支持ASP和ASP.NET的,因此在安装的时候我们必须手动选择你需要的功能。 2:打开iis7.0:安装完成后,再次进入 控制面板,选择 管理工具---“internet信息服务IIS管理器” 3:设置IIS7.0:选择 Default Web Site,并双击 ASP 的选项IIS7中ASP 父路径 是没有启用的,要想方便的使用ASP,首选要 开启父路径,选择True,这一步搞定父路径选项。 4:IIS7的站点设置:右键单击 Default Web Site 选项,选择红线标记的 高级设置 选项。 在下图这个对话框中设置网站的 主目录 ,访问的端口 等设置。按照上面的步骤IIS7的设置已经基本完成了,但是这个时候,在Windows vista中只能调试ASP的程序,但是还是无法调试ASP+Access程序,这是因为windows vista的目录权限问题,下面只剩最后一步,设置目录的权限。 5:权限设置: a:找到系统安装盘:\Windows\ServiceProfiles\NetworkService\AppData\Local,最好是手动输入路径,因为Appdata的文件是隐藏的。右键单击 Temp文件夹,选择 属性。 b:选择 安全 选项,单击 编辑 按钮,进入 编辑权限 的对话框。 c:选择 添加 按钮,添加用户。 d:在 选择用户或组 的对话框中,在 输入对象名称来选择 的表单中,输入大写字幕A后,单击 确定,系统会自动显示所有带有字幕A的系统用户。 e:在系统列出的用户中,选择 Athenticated Users 这个用户,并单击确定。 f:添加完成这个用户以后,选择添加的用户,单击 完全控制,然后 确定,这样,Temp的访问权限搞定了。系统会有安全提示,选择确定就可以了,试一下,是不ASP+Access可以运行了。这样搞定了。 注:特别提醒自己。因为vista在NTFS(磁盘格式)下,所以还要在自己文件夹的安全标签中分别添加:IUSER_机器名和Athenticated Users的完全控制权限。为什么没有了IWAM呢?不懂。 微软的Windows Vista已经发布有一段时间了,相信很多朋友都已经在使用这个最新的操作系统,毋庸置疑的是这款操作系统真的给大家带来了许多的惊喜,但是惊喜的同时也有一些操作的麻烦。 IIS在windows xp专业版中的设置是非常简单的但是在windows vista中,IIS7的使用并不是那么方便的,虽然没有太多的难度,但是由于vista考虑到系统的安全性,还是需要一些设置才能正常使用 ASP+Access,具体教程写下来以供大家使用。原来这篇教程发到了远景论坛,由于时间仓促没有详细的写,现在有时间了可以正式写一下了,以图片为 主,介绍在windows vista下面IIS7的安装、设置、调试ASP+Access的具体方法和步骤,废话少说让我们开始吧!第一步:在windows vista下面IIS7的安装方法。进入Vista的 控制面板,选择左侧的 打开或关闭Windows功能 。 第二步:安装IIS7的选项设置。 单击后会出现安装Windows功能的选项菜单,注意选择的项目,下面这张图片把需要安装的服务都已经选择了,因为Vista的IIS7的默认安装选项中是不支持ASP和ASP.NET的,因此在安装的时候我们必须手动选择你需要的功能。 第三步:安装完成后,再次进入 控制面板,选择 管理工具,在管理工具下面会多出 IIS6的管理工具 选项,选择红线标记的选项进行IIS7的设置。 第四步:设置IIS7。选择 Default Web Site,并双击 ASP 的选项, IIS7中ASP 父路径 是没有启用的,要想方便的使用ASP,首选要 开启父路径,选择True,这一步搞定父路径选项。 第五步:IIS7的站点设置。 右键单击 Default Web Site 选项,选择红线标记的 高级设置 选项。 在下图这个对话框中设置网站的 主目录 ,访问的端口 等设置。 按照上面的步骤IIS7的设置已经基本完成了,但是这个时候,在Windows vista中只能调试ASP的程序,但是还是无法调试ASP+Access程序,这是因为windows vista的目录权限问题,下面只剩最后一步,设置目录的权限。 第一步:需要设置权限的目录路径如下: 系统安装盘:\Windows\ServiceProfiles\NetworkService\AppData\Local,最好是手动输入路径,因为从Appdata的文件是隐藏的。右键单击 Temp文件夹,选择 属性。 第二步:选择 安全 选项,单击 编辑 按钮,进入 编辑权限 的对话框。 第三步:选择 添加 按钮,添加用户。 第四步:在 选择用户或组 的对话框中,在 输入对象名称来选择 的表单中,输入大写字幕 A 后 ,单击 确定 ,系统会自动显示所有带有字幕 A 的系统用户。 第五步:在系统列出的用户中,选择 Athenticated Users 这个用户,并单击确定 。 第六步:添加完成这个用户以后,选择添加的用户,单击 完全控制 ,然后 确定 ,这样, Temp 的访问权限搞定了。系统会有安全提示,选择确定就可以了,试一下,是不 ASP+Access 可以运行了。这样搞定了。 64位/32位 Win7下配置IIS7.5运行ASP+Access网站的方法 我们做网站的肯定要测试网站, 我喜欢用最新的系统,Vista 完全版本, windows 7 的IIS7,许多地方又完善了许多,但是在配置的时候遇到了问题: 800a0ea9错误. 在微软MSDN论坛找到的解决方法: http://blogs.msdn.com/david.wang/archive/2005/09/23/HOWTO_Diagnose_one_cause_of_503_Service_Unavailable_on_IIS6.aspx Changing IIS6 to run W3WP.EXE as 32bit allows the 32bit ISAPI DLLs installed by .NET Framework 1.1 for ASP.NET to load and run inside of it. This is done by running the following commandline: 先用管理员模式运行命令提示符,然后把以下命令粘贴,运行( 一定要安装IIS的全部管理工具!) CSCRIPT %SYSTEMDRIVE%\Inetpub\AdminScripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 网上找到的原文:http://hi.baidu.com/wenm/blog/item/3e80db1b817d33f9af5133ba.html IIS7的安装(iis 7.5 是一样的) Windows Vista中IIS7是默认不安装的,所以在安装完Windows Vista之后如果需要安装IIS7的话,就要自己动手了。安装的步骤为:开始》控制面板》程序》打开或关闭Windows功能》Internet信息服 务。IIS7安装时需要注意的是,如果需要ASP、ASP.NET等的支持,是需要把功能模块给装上的,默认是不安装的。 控制面板中“程序”的位置 “程序”中“打开或关闭Windows功能”的位置 如图,安装IIS7时需要选择要使用的功能模块 (切记!在这里要安装IIS管理工具!把所有勾画上) IIS7安装完成之后可以在开始菜单的所有程序中看到“管理工具”,其中有一个“Internet信息服务管理器”,如果没有可以按以下步骤添加:开始》右击属性》“开始”菜单选项卡》自定义》把“系统管理工具”设置为“在所有程序菜单显示”或者“在所有程序菜单和开始菜单上显示”。 打开Internet信息服务管理器就可以看到IIS7的主页了 IIS7配置ASP+Access使用环境 默认装完IIS7之后,使用ASP程序会发现提示数据库连接失败,在网上找了找,说是因为MS Jet引擎改变了临时目录的位置,但是又没有对临时的存取权限,导致数据库使用失败。 先要设置应用程序池(Application Pool)为Classic .NET AppPool,而不是默认的Default AppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置。选择好要设置的站点之后,点右边的“基本设置”即可调出应用程序池设置对话 框。 然后再给“系统盘:\Windows \ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。 设置权限步骤:右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编 辑”》出来“Temp 的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入Authenticated Users,确定》返回到“Temp 的权限”,将Authenticated Users的权限中的完全控制给勾上,确定》确定。 启用父路径支持 在站点主页上选择“ASP”,然后在“行为”组中将“启用父路径”设置为True即可。 至此,完成了Windows Vista中IIS7的安装及使用ASP+Access的配置。 传统ASP程序开发者使用IIS7的小提示 至今还有这么多传统ASP (Classic ASP) 应用程序和开发者,真让我感到惊讶。我还记得96、97年的时候IIS3问世,我体验了最原始的ASP程序,并为它与ColdFusion相比表现出的惊 人的可编程性赞叹不已。使用传统ASP我建立了许多应用, 它将成为我记忆中永不褪色的闪光点:) 使用传统ASP编程的开发人员应该对IIS7的几个小变化引起注意。 ASP缺省不安装 重要的事先来! 如果从XP迁移到Vista / Longhorn Server, 您也许会得到这个错误: -------------------------------------------------------------------------------------------------------------------- HTTP Error 404.3 - Not Found Description: The page you are requesting cannot be served because of the Multipurpose Internet Mail Extensions (MIME) map policy that is configured on the Web server. The page you requested has a file name extension that is not recognized, and is not allowed. -------------------------------------------------------------------------------------------------------------------- 这是您没有安装ASP组件时的情形,所以去您安装IIS的地方找到IIS/WWW Services(WWW服务)/Application Development(应用程序开发)/ASP 来安装它。:) Access 与传统ASP 很多人使用Access作为数据库-因为它小巧,可复制, 容易处理。我们在Vista IIS7的一个变动就是缺省不使用ASP和Access。本篇我将详细描述这一变化, 但根本上这是因为应用程序池(Application Pool)缺省不再使用\windows\temp, 而改为应用程序池身份档案(identity's profile)和临时目录。并且因为只有"网络服务"才能向网络服务的临时目录执行写入操作, ASP使用虚拟身份(impersonated identity)访问数据库, 所以匿名或已认证的ASP应用程序就会中止。如果您在IIS7使用ASP+Access、你大概会看到与以下提示类似的错误信息: -------------------------------------------------------------------------------------------------------------------- Microsoft JET Database Engine error '80004005' Unspecified error -------------------------------------------------------------------------------------------------------------------- 回答很简单: 关闭loadUserProfile, 或者设置temp directory的访问权限以允许写操作. 这一问题和其它兼容性问题导致, 我们考虑在Longhorn Server / Vista SP1中取消这一变化. 不过现在, 您可以在下列措施中任选一项: 这个 appcmd 指令将为缺省应用程序池关闭 loadUserProfile. 假如您的程序运行于不同的应用程序池(AppPool), 就相应改动一下: %windir%\system32\inetsrv\appcmd set config -section:applicationPools /[name='DefaultAppPool'].processModel.loadUserProfile:false 这条命令将把网络服务的临时目录权限改为可读可写。如果你是以另一个身份来运行程序,那么你还需要将那个身份的临时目录权限给打开: icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant Users:(CI)(S,WD,AD,X) icacls %windir%\serviceprofiles\networkservice\AppData\Local\Temp /grant "CREATOR OWNER":(OI)(CI)(IO)(F) 脚本错误默认为不在浏览器中显示了 作为安全策略的一部分,我们关闭了ASP的自动在浏览器中显示脚本错误的提示。也就是说一般用户将不会再看到你的语句到底是哪一行出了差错。取而代之的是这个错误提示: -------------------------------------------------------------------------------------------------------------------- An error occurred on the server when processing the URL. Please contact the system administrator -------------------------------------------------------------------------------------------------------------------- 要想恢复到IIS6的状态也很容易,运行下面命令即可: %windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true 或者你可以在窗口界面中找到以下这个选项: 之后你就能看到这样的错误提示信息了: -------------------------------------------------------------------------------------------------------------------- Microsoft VBScript compilation error '800a03ea' Syntax error /test.asp, line 4 Response.Write("I love classic ASP" && foo) -------------------------------------^ -------------------------------------------------------------------------------------------------------------------- 父目录默认是不能访问的 在IIS6中我们默认屏蔽了父目录的访问,但是一些从XP升级到Vista的用户显然遇到了麻烦。因为在IIS5.1中,父目录默认是可以访问的。所以如果你使用了http://www.cnblogs.com/../includeFile.inc这样的路径,你就会得到这样的错误提示: -------------------------------------------------------------------------------------------------------------------- Active Server Pages error 'ASP 0131' Disallowed Parent Path /test.asp, line 1 The Include file '../bad.inc' cannot contain '..' to indicate the parent directory. -------------------------------------------------------------------------------------------------------------------- 要想恢复到IIS6的状态也很容易,运行下面命令即可: %windir%\system32\inetsrv\appcmd set config -section:asp -enableParentPaths:true 或者你可以在窗口界面中找到以下这个选项: 如果你是用IE测试的,去掉高级选项里的“显示友好HTTP错误”再看看。 IIS管理器-ASP-Debugging Properties--Send Errors to Browser,改为True。 最好一步给存放的网页代码的文件夹everyone 的权限就搞定了 64位IIS(IIS6/IIS7)上运行Jet.Oledb的设置 由于64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序,也不支持更早的Microsoft Access Driver (*.mdb)方式连接。所以用于 Access 和 Excel 数据库的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用,也就是说,如下两种连接字符串都已经无法正常工作了: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db) "driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db) 既然这样,就只能使用一个办法,将IIS的运行环境设置为32位: IIS6上的做法: 1.命令行键入: cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1 即设置IIS6允许32位程序运行在64位机器上 2.重新注册.net FrameWorks %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 3.完成之后,应该会看到多出一个32位的asp.net,如下图: 将其设置为允许,缺点:这样会使整个IIS上的所有站点都以32位兼容方式运行 IIS7上的做法要简单很多: 应用程序池,高级设置-->允许32位应用程序,如下图: 建议专门针对兼容32位应用驱动新建一个应用池。