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”。
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
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是默认不安装的,所以在安装完WindowsVista之后如果需要安装IIS7的话,就要自己动手了。安装的步骤为:开始》控制面板》程序》打开或关闭Windows功能》Internet信息服 务。IIS7安装时需要注意的是,如果需要ASP、ASP.NET等的支持,是需要把功能模块给装上的,默认是不安装的。
控制面板中“程序”的位置
“程序”中“打开或关闭Windows功能”的位置
如图,安装IIS7时需要选择要使用的功能模块
(切记!在这里要安装IIS管理工具!把所有勾画上)
IIS7安装完成之后可以在开始菜单的所有程序中看到“管理工具”,其中有一个“Internet信息服务管理器”,如果没有可以按以下步骤添加:开始》右击属性》“开始”菜单选项卡》自定义》把“系统管理工具”设置为“在所有程序菜单显示”或者“在所有程序菜单和开始菜单上显示”。
打开Internet信息服务管理器就可以看到IIS7的主页了
IIS7配置ASP+Access使用环境
默认装完IIS7之后,使用ASP程序会发现提示数据库连接失败,在网上找了找,说是因为MSJet引擎改变了临时目录的位置,但是又没有对临时的存取权限,导致数据库使用失败。
先要设置应用程序池(Application Pool)为Classic .NET AppPool,而不是默认的DefaultAppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置。选择好要设置的站点之后,点右边的“基本设置”即可调出应用程序池设置对话 框。
然后再给“系统盘:\Windows \ServiceProfiles\NetworkService\AppData\Local\Temp”目录添加一个“AuthenticatedUsers”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。
设置权限步骤:右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编 辑”》出来“Temp 的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入AuthenticatedUsers,确定》返回到“Temp 的权限”,将AuthenticatedUsers的权限中的完全控制给勾上,确定》确定。
启用父路径支持
在站点主页上选择“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 afile name extension that is not recognized, and is not allowed.
--------------------------------------------------------------------------------------------------------------------
这是您没有安装ASP组件时的情形,所以去您安装IIS的地方找到IIS/WWWServices(WWW服务)/Application Development(应用程序开发)/ASP 来安装它。:)
Access 与传统ASP
很多人使用Access作为数据库-因为它小巧,可复制, 容易处理。我们在VistaIIS7的一个变动就是缺省不使用ASP和Access。本篇我将详细描述这一变化, 但根本上这是因为应用程序池(ApplicationPool)缺省不再使用\windows\temp, 而改为应用程序池身份档案(identity's profile)和临时目录。并且因为只有"网络服务"才能向网络服务的临时目录执行写入操作,ASP使用虚拟身份(impersonated identity)访问数据库, 所以匿名或已认证的ASP应用程序就会中止。如果您在IIS7使用ASP+Access、你大概会看到与以下提示类似的错误信息:
--------------------------------------------------------------------------------------------------------------------
Microsoft JET Database Engine error '80004005'
Unspecified error
--------------------------------------------------------------------------------------------------------------------
回答很简单: 关闭loadUserProfile, 或者设置tempdirectory的访问权限以允许写操作. 这一问题和其它兼容性问题导致, 我们考虑在LonghornServer / 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,如下图: