Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET间歇性DB2连接问题_C#_Asp.net_Asp.net Mvc_Db2_Windows Server 2008 R2 - Fatal编程技术网

C# ASP.NET间歇性DB2连接问题

C# ASP.NET间歇性DB2连接问题,c#,asp.net,asp.net-mvc,db2,windows-server-2008-r2,C#,Asp.net,Asp.net Mvc,Db2,Windows Server 2008 R2,我们有一个ASP.NETMVC应用程序,它使用到iSeries的DB2连接来获取用户设置。我们在一个由4台Windows 2008 R2 SP1服务器组成的web服务器场上托管该网站 偶尔,来自其中一台服务器的任何对DB2的查询都会失败,并显示消息“发生通信错误”。此外,当发生此通信错误时,该服务器有时无法从会话状态服务器获取用户会话,错误为“无法向会话状态服务器发出会话状态请求…”。不过,在此事件期间,它会定期与其他服务器通信,以进行SQL server查询。服务器场中的其他3台服务器正常,如

我们有一个ASP.NETMVC应用程序,它使用到iSeries的DB2连接来获取用户设置。我们在一个由4台Windows 2008 R2 SP1服务器组成的web服务器场上托管该网站

偶尔,来自其中一台服务器的任何对DB2的查询都会失败,并显示消息“发生通信错误”。此外,当发生此通信错误时,该服务器有时无法从会话状态服务器获取用户会话,错误为“无法向会话状态服务器发出会话状态请求…”。不过,在此事件期间,它会定期与其他服务器通信,以进行SQL server查询。服务器场中的其他3台服务器正常,如果我们重新启动问题服务器,它将恢复正常

查看事件查看器并没有显示服务器突然出现通信问题的原因。服务器指标看起来也很正常。该问题在4台服务器中的任意一台上间歇性发生。这是几个月前开始的,在过去的几周里发生得更频繁。在此之前,我们使用当前设置运行了多年,并且确信代码中的任何更改都不会影响这一点。如果您能帮助解决问题或如何排除故障,我们将不胜感激。这是我们的代码片段,如果有帮助的话

using (var cn = new iDB2Connection("ConnectionTimeout=45;Pooling=true;MinimumPoolSize=1;MaximumPoolSize=-1;MaximumUseCount=100;CheckConnectionOnOpen=true;DataSource=XXX;Naming=SQL;DataCompression=True;UserID=XXX;password=XXX;"))
        {
            try
            {
                cn.Open();

                using (var cmd = new iDB2Command(query, cn))
                {
                    //execute reader
                }
            }
            catch (Exception ex)
            {
                //generate error email
            }
            finally
            {
                if (cn.State != ConnectionState.Closed)
                {
                    cn.Close();
                }
            }
        }

如果您有一个
using
语句,那么就没有必要使用
finally
块。我认为这是一个网络问题,因为DB2连接错误与“会话状态服务器”连接错误相一致。iseries的一种故障排除技术:iseries上的dspobjd*all是一个*输出文件。然后查询outfile以查找4个月前更改的对象。或者检查iseries上的qzdasoinit作业