IIS7 无法启动应用程序池

在一台Web应用服务器上(Windows Server 2008 + IIS7.0),布署的OA办公应用系统,在使用一段时间后(大概20-30分钟左右),所都系统页面打开出现空白页面,无法正常访问所有的Web页面。

先停止IIS然后再启动IIS,应用程序池 出现“执行此操作时出错,服务无法在此时接受控制信息"。

请问如何设置,IIS7应用程序池能够支持某一段时间的高并发请求?谢谢!

iis应用程序池不能启动,系统为WINDOWS2003 ENT SERVER(64位)环境下,当打开“应用程序池“,IIS就停,IIS开启,应用程序池就停,日志中出错信息
类型:警告
来源:W3SVC
ID 1057
描述:应用程序池‘DefaultAppPool‘的标识无效,因此World Wide Web Publishing服务不能创建worker进程以服务于应用程序池,这将导致应用程序池被禁用。
类型:错误
ID:1059
描述:
加载为应用程序池‘DefaultAppPool‘提供服务的进程失败,应用程序池被禁用。
回答:根据您的描述,我对您提出的问题的理解是:您的应用程序池和IIS不能同时打开,收到1057和1059错误信息。基于您的状况,我想建议您尝试下面的步骤看是否有助于您的问题解决:
步骤1. 将应用程序池标识用户帐户添加到 IIS _ WPG 组
(默认, NETWORKSERVICE 用户帐户是应用程序池标识用户帐户)。请按照下列步骤操作:
1. 开始,右击我的电脑, 依次 管理 。
2. 展开 本地用户和组, 然后单击 组 。
3. 右击IIS _ WPG, 然后单击 属性 。
4. 在IIS _ WPG属性 对话框中, 单击 添加 。
5. 在 选择用户、计算机或组对话框中, 单击 高级 。
6. 单击 立即查找 。
7. 在 搜索结果 窗格中, 单击应用程序池标识用户帐户, 然后单击 确定 。
8. 单击 确定 。
注意:所有应用程序池标识应该是 IIS _ WPG 组的成员。
步骤2. 确保 IIS _ WPG 组具有必需权限来访问 ASP.NET 名称注册表项。
要授予 IIS _ WPG 所需权限, 请按照下列步骤操作:
1. 单击开始 ,单击运行 , 类型regedit然后单击 确定 。
2. 找到并单击以下注册表子项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ASP.NET_2.0.50727\Names
3. 名称,右击,然后单击权限 。
4. 单击 添加 , 类型 IIS_WPG单击 检查姓名 , 然后单击 确定 。
5. 在 名称的权限 对话框中, 单击 高级 。
6. 然后单击 编辑 , 权限 选项卡和 IIS _ WPG , 名称高级安全设置 对话框中。
7. 在 用于名称权限项目 对话框, 确保 IIS _ WPG , 是在 名称 框中。
8. 单击以选中下列复选框:? 查询值
? 设置值
? 创建子项
? 枚举子项
? 通知
? 读取控制
9. 在所有对话框中, 单击, 确定 , 然后退出注册表编辑器。
步骤3. 如果服务器是域控制器, 则必须更改应用程序池标识。 要这样做, 请按照下列步骤操作:
1. 开始 ,指向管理工具 , 依次Internet信息服务(IIS)管理器 。
2. 以IIS管理器, 展开服务器, 展开 应用程序池 , 右击与要修改, 应用程序池的名称, 然后单击 属性 。
3. 中 Application_Pool属性 对话框中, 单击 标识 选项卡。
4. 单击 配置帐户 , 键入帐户用户名称。 或单击 浏览 以定位帐户。
5. 在 密码 框中, 键入帐户密码, 然后单击 确定 。
步骤4. 添加UseSharedWPDesktop注册表项到运行IIS的计算机。
此注册表项允许所有要在一个共享桌面, 不管其辅助进程标识运行辅助进程。要添加 UseSharedWPDesktop 注册表项:
1. 单击开始 ,单击运行, 类型regedit然后单击 确定 。
2. 找到以下注册表项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC
3. 右键单击 Parameters , 指向 新建 , 然后单击 DWORD 值 。
4. 类型 UseSharedWPDesktop.
5. 将对此新项值设置为 1
6. 退出注册表编辑器, 并重新启动 IIS。

谢谢您的回复。我这个问题与您给我的解决问题不一样。
我的问题是
OA办公应用系统,在使用一段时间后,所有的页面请求都无法失败,导致系统页面无法显示数据,
需要手动停止IIS应用程序池然后再手动启动IIS应用程序池,在这过程中出现无法启动应用程序池报“执行此操作时出错,服务无法在此时接受控制信息"。

请问此问题,如何解决。谢谢!

我将WEB地址访问改到本地自己的开发环境下,发现这个OA系统使用一段时间后,报"未将对象引用设置到对象的实例",而且好像是数据库连接这块。
好像没有及时关闭释放数据库连接对象导致的(其实OA系统中已经写好了释放数据库连接这块的代码)。
请问,有没有解决方法。

  访问数据库代码大致如下,请帮忙看看。谢谢! 
        public PageBean Select<T>(string sql, IDictionary param) where T : new()
    {
         PageBean pageBean = new PageBean();
        SqlHelper sqlHelper = CreateSqlHelper(sql);
        sqlHelper.ParamList = param;

        Type entityType = null;
        // 若T==BaseInfo,则根据SQL语句,动态构建实体对象(即:无对应的Model类文件)
        if (typeof(T) != typeof(BaseInfo))
            entityType = CreateObject(sqlHelper.DataReader).GetType();

        //记取记录列表到实体列表
        while (sqlHelper.DataReader.Read())
        {
            object obj = entityType != null ? new T() : CreateObject(sqlHelper.DataReader);// System.Activator.CreateInstance(entityType);
            Populate(sqlHelper.DataReader, obj);
            pageBean.Rows.Add(obj);
        }

        //读取分页参数
        if (sqlHelper.DataReader.NextResult())
        {
            sqlHelper.DataReader.Read();
            pageBean.RecordCount = sqlHelper.DataReader[0] is DBNull ? 0 : Convert.ToInt32(sqlHelper.DataReader[0]);
        }
        else
        {
            pageBean.RecordCount = pageBean.Count;
        }
        sqlHelper.Close();
        pageBean.CreateDate = DateTime.Now;
        pageBean.PageSize = pageBean.RecordCount;
        pageBean.PageIndex = 1;

        return pageBean;
    }


    public IDbConnection _connection = null;
    protected IDataReader _dataReader = null;
     public bool Close()
    {
        try
        {
            if (this._dataReader != null)
            {
                this._dataReader.Close();
                this._dataReader.Dispose();
                this._dataReader = null;
            }

            if (_connection != null && _connection.State != System.Data.ConnectionState.Closed)
            {
                _connection.Close();
                _connection.Dispose();
            }
            _connection = null;
            return true;
        }
        catch
        {
            return false;
        }
    }