当前位置: 首页 > 图文教程 > 操作系统 > Windows > 503 service unavailable错误说明

Windows
被忽略的Windows Server 2008几大特性
Windows下20个省力的特殊的执行命令
解决新安装Windows XP后键盘不可用问题
禁止他人使用机器中的某个软件的方法
让Windows XP更快 只需屏蔽五项功能
保留原装系统轻松搞定HP笔记本分区
微软发布Windows HPC Server 2008
XP的一个无敌命令 替换正在使用文件
Windows 7功能清单被泄漏 内容极为丰富
关于Windows XP SP3 的常见问题解答
加强Windows操作系统安全性的十大建议
解除远程管理Windows XP SP2的烦恼
如何用光盘修复SATA硬盘的分区表
Windows 2000中的加密技术被发现漏洞
Windows优化助手正在测试 功能新颖
五种方法解决XP系统无法停止通用卷设备
申请Windows 2008 Beta 3激活码的方法
IT企业:如果不选Vista,就选OS X
Windows操作系统中几个故障的解决方法
Windows 2008 Beta 3激活码申请方法

Windows 中的 503 service unavailable错误说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-16   浏览: 24 ::
收藏到网摘: n/a

每个AppPool要指定一个身份(identity)来运行。IIS6中AppPool默认运行身份为NT AUTHORITY\NETWORK SERVICE。这是一个系统内建帐户,完全受系统控制。它支持所有必要的以服务登录(Log on as a service)的权限,密码也是内部来维护——换句话说,我们可以把以服务登录理解为它可以控制了哪些帐户能够使用、操作远程资源。我们可以通过很多方法控制远程资源的访问。比如修改远程资源ACL表,并允许远端机器访问本地资源;或者在远程访问时换作远端授信帐户(impersonating)进行操作;或者索性让我们的程序运行在某一个配置帐户下——log on as a service。不同的是它是宿主在IIS的AppPool中的,必然收到IIS控制,用户本身没有办法像普通服务程序那样启动它。我要试验的就是指定AppPool以配置帐户启动。
  
  我们分几步来部署一个web程序以指定账户运行。
  1. 打开IIS6,在AppPool节点找到我们要修改的web程序,右键属性。
  默认IIS是选择Predefined帐户:Network Service。现在我们勾选Configurable,并指定帐户和密码。注意:这个帐号必须是一个域帐号!
  2. 将我们之前指定的apppool帐号加入IIS_WPG用户组中。IIS_WPG用户组维护了所有可以以其中帐户启动worker Process的帐户。Worker Process是由IIS启动的。
  
  做完这两步,本以为可以完美的开启自定义帐户运行的w3wp.exe。却不想得到"Service Unavailable”的异常。翻看event log,我们得到以下一些错误:
  错误一:此错误基本就是重复一下Service Unavailable的意思。。。注意主谓关系:有某某后台要启动某个process来运行appPool。这个process肯定就是w3wp.exe。但那个后台是谁?这里还不知道。
  
  Event Type: Error
  Event Source: W3SVC
  Event Category: None
  Event ID: 1059
  Date: 1/18/2008
  Time: 11:48:27 AM
  User: N/A
  Computer: HITOMI
  Description:
  A failure was encountered while launching the process serving application pool 'HITOMIWS'. The application pool has been disabled.
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  错误二:已经告诉我们所指定的appPool帐户非法。另外一个极重要的提示回答了error一的疑惑:是World Wide Web Publishing Service无法启动w3wp.exe。(这里也回答了文章最初的问题)至此,唯一的问题就是为什么帐户非法?往下看。。。
  
  Event Type: Warning
  Event Source: W3SVC
  Event Category: None
  Event ID: 1057
  Date: 1/18/2008
  Time: 11:48:27 AM
  User: N/A
  Computer: HITOMI
  Description:
  The identity of application pool 'HITOMIWS' is invalid, so the World Wide Web Publishing Service can not create a worker process to serve the application pool. Therefore, the application pool has been disabled.
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  
  错误三:谜底揭晓了。该账户没有被赋予logontype4,导致它非法。如果有经验的话,这种帐户-logonType控制是在local Security Settings\Local Policy\User Rights Assignments里定义的。具体来说就是log on as a service。
  
  Event Type: Failure Audit
  Event Source: Security
  Event Category: Logon/Logoff
  Event ID: 534
  Date: 1/18/2008
  Time: 11:48:08 AM
  User: NT AUTHORITY\SYSTEM
  Computer: HITOMI
  Description:
  Logon Failure:
   Reason: The user has not been granted the requested
   logon type at this machine
   User Name: HITOMIWEBSERVICE
   Domain: REDMOND
   Logon Type: 4
   Logon Process: Advapi
   Authentication Package: Negotiate
   Workstation Name: HITOMI
   Caller User Name: HITOMI$
   Caller Domain: REDMOND
   Caller Logon ID: (0x0,0x3E7)
   Caller Process ID: 640
   Transited Services: -
   Source Network Address: -
   Source Port: -
  
  For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
  Start > Run, secpol.msc回车, 打开local Secuirty Settings,展开Local Policy\User Rights Assignments,选择Log on as a service这个policy,果然里面有NetworkService和sql server的n多帐户,我们再把appPool帐户加到这个list里面。做完之后,machine需要重新启动。等一切再次ready以后,我们再试一下web程序,欣喜看到w3wp.exe已经以指定帐号启动了!
  回头再考虑一下我们什么时候要用指定帐户运行web程序呢?It depends。当我们的web 程序要经常访问域内其他节点资源的时候,为提高访问安全要用到指定帐户,加强ACL控制。其实在大多数情况下NetworkService已经可以够用了。