首页 新闻 会员 周边 捐助

IIS7 无法启动应用程序池

0
悬赏园豆:10 [已解决问题] 解决于 2018-01-20 12:56

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

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

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

lwr的主页 lwr | 初学一级 | 园豆:48
提问于:2017-11-23 14:37
< >
分享
最佳答案
0

可以修改应用程序池的定时回收设置

收获园豆:10
dudu | 高人七级 |园豆:30925 | 2017-11-23 14:51

在IIS 中已经将 回收 中"固定时间间隔(分钟)"改成60

还是解决不了问题。请问具体如何设置下,谢谢!

lwr | 园豆:48 (初学一级) | 2017-11-23 16:53

@lwr: 根本问题是OA系统的问题,设置回收时间是临时解决方法——“大概20-30分钟左右”,回收时间要小于这个时间

dudu | 园豆:30925 (高人七级) | 2017-11-23 16:58

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

lwr | 园豆:48 (初学一级) | 2017-11-24 08:23

@lwr: 建议仔细检查代码,SqlConnection 与 SqlDataReader 都放到 using 语句块中

using (var conn = new SqlConnection(GlobalSettings.ConnectionString))
{
    using (var command = conn.CreateCommand())
    {
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "...";
        command.Parameters.AddWithValue("...", value);
        await conn.OpenAsync();
        using (IDataReader reader = await command.ExecuteReaderAsync())
        {
            //...
        }
    }
}
dudu | 园豆:30925 (高人七级) | 2017-11-24 08:50

@dudu: 
我在代码中已经释放关闭连接对象了,我没有用using,应该问题也不大吧。
帮忙看看哪里不对。谢谢!

读取数据库的代码大致如下,     
  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;
            }
        }

lwr | 园豆:48 (初学一级) | 2017-11-24 11:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册