いくつかの機能を公開するために、数ミリ秒ごとに呼び出される Web サービスを使用しています。基本的に、これらの機能はストア プロシージャに基づいており、すべてのメソッドは次のようになります。
[WebMethod]
public bool CheckMessageForMES( out int returnCode, out int messagePK, out String messageBody, out bool isRowFetched )
{
using ( SqlConnection connection = new SqlConnection() )
{
using(SqlCommand command = _dl.GetSqlCommandForStoredProcedure(DataLayer.SP_NAME, connection)){
SqlParameter parameterReturnCode = _dl.CreateParameter("@returnCode", DbType.Int16, ParameterDirection.Output);
SqlParameter parameterMessagePK = _dl.CreateParameter("@messagePK", DbType.Int32, ParameterDirection.Output);
SqlParameter parameterMessageBody = _dl.CreateParameter("@messageBody", DbType.Xml, ParameterDirection.Output);
SqlParameter parameterIsRowFetched = _dl.CreateParameter("@isRowFetched", DbType.Int16, ParameterDirection.Output);
SqlParameter[] parameters = {
parameterReturnCode,
parameterMessagePK,
parameterMessageBody,
parameterIsRowFetched
};
command.Parameters.AddRange(parameters);
connection.Open();
using (SqlDataReader r = command.ExecuteReader() )
{
r.Close();
}
connection.Close();
returnCode = int.Parse(parameterReturnCode.Value.ToString());
messagePK = int.Parse(parameterMessagePK.Value.ToString());
messageBody = parameterMessageBody.Value.ToString();
isRowFetched = int.Parse(parameterIsRowFetched.Value.ToString()) > 0;
}
}
return isRowFetched;
}
Web サーバー プロセスはメモリを消費し、解放されません。VS10 ツールを使用すると、問題は command.ExecuteReader() にあるようです。なぜなのかご存知ですか?
私はこの方法を正しい方法で実装していますか?
ありがとう!