sxl_88
sxl_88
采纳率50%
2017-11-23 06:19 阅读 2.1k

IIS7 无法启动应用程序池

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • sinat_30830525 sinat_30830525 2017-11-23 06:59

    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。

    点赞 评论 复制链接分享
  • sxl_88 sxl_88 2017-11-24 00:05

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

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

    点赞 评论 复制链接分享
  • sxl_88 sxl_88 2017-11-24 02:00

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

    点赞 评论 复制链接分享
  • sxl_88 sxl_88 2017-11-24 03:13
      访问数据库代码大致如下,请帮忙看看。谢谢! 
            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;
            }
        } 
    
    点赞 评论 复制链接分享

相关推荐