ASP.NET中的AS400数据连接

问题描述:

我有一个应用程序驻留在将在我们的内部网络环境中与我们的AS400进行通信的business2business网络中。防火墙已配置为允许通过我们的AS400发送数据请求,但是我们发现连接速度和响应时间存在巨大滞后时间。例如,在我们的本地开发环境中,花费不到半秒的时间就会在我们的B2B环境中花费120秒以上。ASP.NET中的AS400数据连接

这是我们用来获取数据的函数。我们正在使用的企业库应用程序块,所以ASI对象是数据库...

/// <summary> 
/// Generic function to retrieve data table from AS400 
/// </summary> 
/// <param name="sql">SQL String</param> 
/// <returns></returns> 
private DataTable GetASIDataTable(string sql) 
{ 
    DataTable tbl = null; 

    HttpContext.Current.Trace.Warn("GetASIDataTable(" + sql + ") BEGIN"); 
    using (var cmd = ASI.GetSqlStringCommand(sql)) 
    { 
     using (var ds = ASI.ExecuteDataSet(cmd)) 
     { 
      if (ds.Tables.Count > 0) tbl = ds.Tables[0]; 
     } 
    } 
    HttpContext.Current.Trace.Warn("GetASIDataTable() END"); 
    return tbl; 
} 

我想集思广益一些想法来考虑,为什么这正在发生。

+0

+1我肯定想知道发生了什么。 – 2009-03-03 18:14:38

未用过的愤怒ASP.NET或AS400我会提到它的情况下,但我已经看到这种行为之前,它通常表示某种的网络问题,通常是反向DNS查询超时。

假设您通过防火墙启用了ping,请检查您是否可以在两个方向上ping。

也从每台机器运行traceroute来尝试和诊断延迟可能在哪里。

希望有所帮助。

+0

@brindy - 谢谢!我明天就会明白。 – RSolberg 2009-03-04 02:06:07

对不起,但我不能告诉你发生了什么,但我只是有几个意见... 首先,我会输出sql,看看它是否有很多连接和/或正在打一个表文件)与大量的记录。如果你真的想挖掘你选择的分析器(我使用蚂蚁探查器),并尝试找到400的探查器 - 看看它通过odbc驱动程序后的服务器资源以及实际查询。

我已经与asp.net和as400一起工作过几次,而且我最成功的方式实际上是使用带有链接服务器的SQL Server到AS400。我创建了一个视图,使其更容易处理 - 隐藏了as400命名的怪癖。它在我的场景中运行良好,因为应用程序无论如何都需要从sql server获取信息。

我认为它可以帮助...好运

+0

选择是这样的:select a,b,c其中x = y ...没什么特别的。非常赞赏。 – RSolberg 2009-03-04 02:06:38

检查iSeries系统的大小。根据查询的大小,如果系统运行的应用程序尺寸过小,这可能需要一些时间。虽然它不应该作为一种可能性被抛弃,但我在过去也看到过类似的行为。但当然更可能是一个网络问题。

另一个想法,如果你可以解决速度问题或是一个大小问题,就是将它存储在MS SQL Server中,然后将记录从SQL Server写入iSeries。