代码之家  ›  专栏  ›  技术社区  ›  asawyer

为什么我在查询as/400服务器时收到“发生通信错误”?

  •  2
  • asawyer  · 技术社区  · 14 年前

    我有一个网站,它查询一个as/400数据库以获取某些信息,包括登录用户的一小部分信息。

    因此,每当用户登录到新会话时,都会查询as/400。

    我收到零星的报告 A communication error occurred 服务器错误,尤其是当人们在周末登录时。

    如果您点击f5并刷新页面,错误就会清除,一切正常。

    有人知道我为什么会犯这个错误吗?

    我在想,既然f5清除了这个错误,我可以简单地重试任何由于这个原因而失败的查询,但是我不想在没有更深入了解情况的情况下开始。

    我浏览了IBM的用户文档和google的一些搜索,但什么也没想到。

    编辑

    连接是通过 IBM.Data.DB2.iSeries windows驱动程序,版本12。

    连接代码如下所示:

    public DataSet RetrieveDataSet(string sql)
     {
        DataSet ds = new DataSet();
        iDB2Connection con = new iDB2Connection();
    
        iDB2DataAdapter da = null;
        try
        {
            con.ConnectionString = ConnectionString;
    
            con.Open();
    
            da = new iDB2DataAdapter(sql, con);
    
            da.Fill(ds);
    
        }
        catch (Exception ex)//yes i am aware this should not be catching the base exception
        {
            LogError("AS400Connection", "RetrieveAll", ex.Message, sql, ex.StackTrace, con.JobName.Trim());
            throw;
        }
        finally
        {
            if (con.State == ConnectionState.Open)
                con.Close();
            if(da!=null)
                da.Dispose();
            con.Dispose();
            ds.Dispose();
        }
    
        return ds;
    }
    

    这个 da.Fill(...) 线路正在引发通信错误异常。

    4 回复  |  直到 14 年前
        1
  •  3
  •   asawyer    14 年前

    我最后只写了一小段代码,在每个关键部分之前调度了一个小查询,所以如果作业结束了,它只会终止该查询,而不是整个应用程序。

    编辑-

        2
  •  1
  •   Thorbjørn Ravn Andersen    14 年前

    一种非常常见的情况是,当长时间空闲时,网络路由器和防火墙会自动关闭TCP/IP连接。

    我想这正是这里发生的事。

        3
  •  0
  •   Mike Wills    14 年前

    六羟甲基三聚氰胺六甲醚。。。真奇怪。你能复制这个错误吗?如果你在这里没有其他的建议,可以试着把这个放在 midrange.com MIDRANGE-L System i dotNet

        4
  •  0
  •   dario_ramos    9 年前

    当我试图使用查询工具访问服务器时,我意识到了这一点,它告诉我我的用户被禁用,即使我输入了新密码。这是我的错,但错误信息并不是真正的信息。。。