Я попытался найти здесь ответы, связанные с этой проблемой, и все они работают в тестовой среде, но не в развертывании.
У меня есть эта функция, которая хорошо работает в тестовой среде:
static SqlConnection dbconn = new SqlConnection("Data Source=192.168.0.73;Initial Catalog=CAMFIN;Integrated Security=False;User ID=user;Password=password;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
private static void CreateTable(string query, string filename, string subject, string reportref, string branch)
{
Console.WriteLine("Preparing data....");
if (dbconn.State == ConnectionState.Closed)
{
dbconn.Open();
}
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
using (SqlCommand cmd = new SqlCommand(query, dbconn))
{
cmd.Parameters.AddWithValue("@date", DateTime.Today);
cmd.Parameters.AddWithValue("@branch", branch);
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 0;
da.SelectCommand = cmd;
da.Fill(dt); //throws an error on production
if (dt.Rows.Count >= 1)
{
string attachments = filedir + filename + ".xlsx";
DatatableToExcel(dt, attachments, subject, filename);
filestosend.Add(attachments);
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(branchname + " Office has no data to bound.");
}
}
}
Когда я тестирую его на производстве, функция выдает ошибку.
Error:
An exception of type 'System.InvalidOperationException' occurred in System.Data.dll but was not handled in user code
Additional information: There is already an open DataReader associated with this Command which must be closed first.