PageAsyncTask
Web フォーム vs2010 fw4を使用する古いプロジェクトをサポートする必要があります。
ただし、この単純なコードはコンパイル + 実行 (デバッグ モード/トレース モードでエラーなし) を行いますが、応答は決して終了しません。
デバッグ モード + ブレークポイントで見ると、コードのすべての段階に到達します。
public partial class _Default2 : System.Web.UI.Page
{
IAsyncResult BeginGetData(object sender, EventArgs e, AsyncCallback callback, object state)
{
SqlConnection con = new SqlConnection(@"Data Source=... Asynchronous Processing=True;");
var sql = @" SELECT [NAME] FROM [WebERP].[dbo].[t]";
{
SqlCommand _cmd = null;
try
{
_cmd = new SqlCommand(sql, con);
_cmd.CommandTimeout = 100000;
con.Open();
return _cmd.BeginExecuteReader(EndGetData, _cmd);
}
catch (Exception ex)
{
if (_cmd != null) _cmd.Dispose();
con.Close();
throw;
}
}
}
void EndGetData(IAsyncResult ar)
{
(ar.AsyncState as SqlCommand).EndExecuteReader(ar);
Response.Write(1111); // HttpContext.Current.Response also doesnt help
}
void TimeoutData(IAsyncResult ar)
{
Response.Write("Could not retrieve data!");
}
protected void Page_Load(object sender, EventArgs e)
{
PageAsyncTask task = new PageAsyncTask(BeginGetData, EndGetData, TimeoutData, null, true);
Page.RegisterAsyncTask(task);
Page.ExecuteRegisteredAsyncTasks();
}
}
質問
返事は尽きることがありません。私が見るのは:
何が欠けていますか?
(nbAsync="true"
は page ディレクティブにあります。また、ケースを説明するためだけにコードが単純化されました)