There is already an open DataReader associated with this Connection which must be closed first

1134 ワード

最近WebApiインタフェースを書いていて、いくつかの問題に遭遇して、まとめてみます.これらの問題は必ずしもWebApiと関係があるとは限らず、些細なことだ.
まとめリスト:1.There is already an open DataReader associated with this Connection which must be closed first 2. npm installに失敗しました.WebApi HTTP Put 405 Method not allowed
問題現象:一つのインタフェースが複数回呼び出され、マルチスレッド呼び出しインタフェースと考えられ、インタフェース内部にC#のAsync Awaitを使用し、コード形は以下の通りである:return new GetXResponse
{
A= await A.GetAAsync(xx),
B= await B.GetBAsync(xx),
C= await C.GetCAsync(xx),
D= await D.GetDAsync(xx),
E= await E.GetEAsync(xx),
F= await F.GetFAsync(xx),
G= await G.GetGAsync(xx)
};
は1つの誤りを犯して、A、B、C、Dなどはすべてデータベースに接続して、データベースのコードに接続して、usingを使ってusing (Connection)
{
return (await conn.QueryAsync(sql, parms)).ToList();
}
を適切ではありません
Connectionは、コンストラクション関数が完了した初期化new MySqlConnectionで、マルチスレッド呼び出し時にusingがデータベース接続をタイムリーに回収せず、以下のように変更した後、この異常を修復します.using (var conn = new MySqlConnection(ConnString))
{
return (await conn.QueryAsync(sql, parms)).ToList();
}

転載先:https://www.cnblogs.com/AlienXu/p/7553741.html