1

Page_Load および Binds GridView で SqlDataSource を介してストアド プロシージャを呼び出す ASP.NET ページがあります。PageLoad では、次のようなことをしています。

string connectionString = BLTutela.BLclsDatabaseConfigurations.GetDefaultConnectionString();
dataSource.ConnectionString = connectionString;
dataSource.SelectParameters["ReportFromDate"].DefaultValue = reportFromDateValue.Date.ToString();
...            
GridView1.DataSource = dataSource;
GridView1.DataBind();

dataSource は SqlDataSource で、StoredProcedure を呼び出します。コードは機能していますが、次の問題が発生する可能性があるため、最初のバージョンにすぎません (非常に長いレポートを生成するレポート ページであるため、これらの問題が発生する可能性があると思います)。

1) ストアド プロシージャの実行時間が長すぎる -> SessionTimeout が発生する可能性があり、システムからの応答が非常に長い間表示されない

2) ストアド プロシージャが終了したとしても、グリッドビューへのデータのロードも非常に長いプロセスになる可能性があります。これにより、別のセッション タイムアウトが発生する可能性があります。

1) 長いサーバー プロセス (ストアド プロシージャ) のセッション タイムアウトを表示しない、2) グリッドビューにデータを表示するためのタイムアウトがない、3) データの読み込み中に進行状況バーを表示するという解決策が必要です。

Threads や AsyncCalls を使用したことがないので、まず調査を行いたいと思いました。

今のところ、次のリンクを見つけました: http://madskristensen.net/post/Asynchronous-GridView-in-5-simple-steps.aspx これが私のケースでうまくいくかどうか、そして私が認識していない問題は何か疑問に思います.

4

1 に答える 1

4

問題を解決するために、定義することができますTimeout on your string connection

Connect Timeoutプロパティの調整

<connectionStrings>
 <add name="ConnectionString" connectionString="Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Connect Timeout=200" providerName="System.Data.SqlClient"/>
</connectionStrings>

SqlDataSource の Selecting イベントでタイムアウト値を設定できます。

protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
   e.Command.CommandTimeout = 200;
}
于 2012-09-27T18:09:04.633 に答える