知识库安装调试64位/32位 Win7下配置IIS7.5解决800a0ea9错误的方法

文章检索

检索语言 简体中文
检索范围   
检索内容    

64位/32位 Win7下配置IIS7.5解决800a0ea9错误的方法

分享到:
浏览:18718 次   相关度: 2465.5/2465.5

    我们做网站的肯定要测试网站, 我喜欢用最新的系统,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

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中,父目录默认是可以访问的。所以如果你使用了../../../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 的权限就搞定了

对您是否有帮助? 有帮助 (点击图标进行投票)  有些帮助 (点击图标进行投票)  没有帮助 (点击图标进行投票) 

没有答案?

点此提交您的问题! 您已浏览全部的解决办法,但尚未解决您的问题?
您可以 点此 提交您的问题!

帮助类别

热门问题