从 IIS 7.5应用程序池自动停止处理说起

今天处理一个网站部署,遇见一个问题,部署网站之后,浏览时总是报503,找了半天才发现是用户权限问题,现在记录一下,方便以后遇到的大伙快速解决问题,以至于不会浪费太多时间。

WIN2008 R2系统部署配置iis7.5 (Internet Information Server)失败,一直未能启动服务,访问本地网络提示”Service Unavailable HTTP Error 503. The service is unavailable“。

服务器登录表现的症状是DefaultAppPool启动后,刷新网页后应用程序池立即自动停止。

使用系统日志查一下报错的3条详细信息:

第一条:应用程序池DefaultAppPool的标识无效。可能是为标识指定的用户名或密码不正确,或者用户不具有批登录权限。如果不更正标识,则当应用程序池接收到它的第一个请求时,应用程序池将被禁用。如果是批登录权限导致的此问题,则必须在授予权限之后更改 IIS 配置存储中的标识,然后 Windows Process Activation Service (WAS)才可以重试登录。如果在处理对应用程序池的第一个请求之后标识仍然无效,应用程序池将被禁用。数据字段包含错误号。

第二条:应用程序池DefaultAppPool已被禁用。Windows Process Activation Service (WAS) 未创建工作进程来为应用程序池提供服务,因为该应用程序池标识无效。

第三条:应用程序池DefaultAppPool已被禁用。Windows Process Activation Service (WAS)在启动为该应用程序池提供服务的工作进程时失败。

首先怀疑IIS ADMIN SERVICE权限。

解决方法:
应用程序-特定权限设置未将COM服务器应用程序
(CLSID 为 {A9E69610-B80D-11D0-B9B9-00A0C922E750} ) 的本地激活权限授予用户NT AUTHORITYNETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。 
解决方法,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下: 
点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项, 

选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE”,给该帐号赋予“本地启动”和“本地激活”、“远程激活”的权限,重新启动IIS之后再访问同一站点。

如果现在IIS ADMIN SERVICE下右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”的按钮不可点击,可以使用如下方法启用:
这个是win2008 R2 x64的安全特性.一些核心系统组件只能允许本地帐号,TrustedInstaller有完全控制权限,而不是本地管理员组。要在Windows Server 2008 R2 上修改 “IIS Admin Service” ,你需要授予本地管理员组有注册表权限:
1.在组件管理器中查到IIS的appid
2.使用regedit,定位到HKEY_CLASSES_ROOT\AppID\{A9E69610-B80D-11D0-B9B9-00A0C922E750}”
3.右键点击{A9E69610-B80D-11D0-B9B9-00A0C922E750}选权限
4.在权限设置窗口中点高级,选择所有者标签,选中administrators为所有者
5.授予administrators组有读/写等所有权 注意:务必不要修改TrustedInstaller的权限


处理完毕后,刷新页面,应用程序池不会自动停止了,但是IIS又报401.2错误:
401 - 未授权: 由于凭据无效,访问被拒绝。您无权使用所提供的凭据查看此目录或页面。

由于身份验证头无效,您无权查看此页


需要调整下IIS里边的匿名身份访问验证,点击对应的网站,按照如下操作:
1.功能视图---身份验证--全部禁用--开启--匿名身份验证-编辑--选择应用程序池标识;


2.功能视图---授权规则--右键添加允许规则--选择所有用户;


3、对应网站应用程序池的高级设置中,将应用程序池标识改为NetworkService;

最后重启一下IIS服务;

访问网站,O了: