Sayfayı tekrar hızlı açtığımda yada bir kaç sayfa aynı anda açtığımda alıyorum. Bağlantı kapanma hatası sanırım ama bulamadım. sqlhelper class kullanıyorum
- ...Server Error in '/' Application.
- There is already an open DataReader associated with this Command which must be closed first.
- Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
-
- Exception Details: System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.
-
- Source Error:
-
-
- Line 99: {
- Line 100: DataTable table = new DataTable();
- Line 101: adapter.Fill(table);
- Line 102: CloseConnection();
- Line 103: adapter.Dispose();
-
- Source File: c:\Inetpub\vhosts\izmirdental.com\izmirtermal.izmirdental.com\App_Code\SqlHelper.cs Line: 101
-
- Stack Trace:
-
-
- [InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.]
- System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command) +1731690
- System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async) +314
- System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) +156
- System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +84
- System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +207
- System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +214
- System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +465
- System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +147
- SqlHelper.ToDataTable() in c:\Inetpub\vhosts\izmirdental.com\izmirtermal.izmirdental.com\App_Code\SqlHelper.cs:101
- SqlHelper.ToValue(Int32 rowIndex, Int32 cellIndex) in c:\Inetpub\vhosts\izmirdental.com\izmirtermal.izmirdental.com\App_Code\SqlHelper.cs:116
- Kategorisi.Page_Load(Object sender, EventArgs e) in c:\Inetpub\vhosts\izmirdental.com\izmirtermal.izmirdental.com\Kategorisi.aspx.cs:21
- System.Web.UI.Control.OnLoad(EventArgs e) +108
- System.Web.UI.Control.LoadRecursive() +90
- System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1533
-
- Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4261.0
SqlHelper class kodum
...using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public interface ISqlCommand
{
ISqlCommand CommandText(string commandText);
ISqlCommand Connection(SqlConnection connection);
ISqlCommand Transaction(SqlTransaction transaction);
ISqlCommand CommandTimeout(int timeout);
ISqlCommand CommandType(CommandType commandType);
ISqlCommand Parameters(Func<ISqlCommandParameter, object> parameter);
DataSet ToDataSet();
DataTable ToDataTable();
DataRow ToDataRow(int rowIndex = 0);
TResult ToValue<TResult>(int rowIndex = 0, int cellIndex = 0);
SqlDataReader ExecuteReader(CommandBehavior commandBehavior = CommandBehavior.Default);
int ExecuteNonQuery();
object ExecuteScalar();
TResult ExecuteScalar<TResult>();
}
public interface ISqlCommandParameter
{
ISqlCommandParameter Add(SqlParameter parameter);
ISqlCommandParameter Add(string parameterName, object value);
ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType);
ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType, int size);
ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn);
ISqlCommandParameter AddWithValue(string parameterName, object value);
}
public class SqlHelper : ISqlCommand, IDisposable
{
#region Filds
public static readonly SqlConnection DefaultConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString);
private readonly SqlCommand _command = null;
private SqlConnection _connection = null;
private SqlTransaction _transaction = null;
#endregion
static SqlHelper()
{
}
public SqlHelper()
{
_connection = DefaultConnection;
_command = new SqlCommand { Connection = _connection };
}
#region ISqlCommand
public ISqlCommand CommandText(string commandText)
{
_command.CommandText = commandText;
return this;
}
public ISqlCommand Connection(SqlConnection connection)
{
_connection = connection;
return this;
}
public ISqlCommand Transaction(SqlTransaction transaction)
{
_transaction = transaction;
_command.Transaction = _transaction;
return this;
}
public ISqlCommand CommandTimeout(int timeout)
{
_command.CommandTimeout = timeout;
return this;
}
public ISqlCommand CommandType(CommandType commandType)
{
_command.CommandType = commandType;
return this;
}
public ISqlCommand Parameters(Func<ISqlCommandParameter, object> parameter)
{
SqlCommandParameter param = new SqlCommandParameter(_command);
parameter.Invoke(param);
return this;
}
public DataSet ToDataSet()
{
using (SqlDataAdapter adapter = new SqlDataAdapter(_command))
{
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
return dataSet;
}
}
public DataTable ToDataTable()
{
OpenConnection();
using (SqlDataAdapter adapter = new SqlDataAdapter(_command))
{
DataTable table = new DataTable();
adapter.Fill(table);
CloseConnection();
adapter.Dispose();
return table;
}
}
public DataRow ToDataRow(int rowIndex = 0)
{
DataTable table = ToDataTable();
if (table.Rows.Count == 0) return null;
return table.Rows[rowIndex];
}
public TResult ToValue<TResult>(int rowIndex = 0, int cellIndex = 0)
{
DataTable table = ToDataTable();
if (table.Rows.Count == 0) return default(TResult);
object value = table.Rows[rowIndex][cellIndex];
if (value is TResult)
{
return (TResult)value;
}
throw new InvalidCastException();
}
public SqlDataReader ExecuteReader(CommandBehavior commandBehavior = CommandBehavior.Default)
{
OpenConnection();
return _command.ExecuteReader(commandBehavior);
}
public int ExecuteNonQuery()
{
OpenConnection();
int result = _command.ExecuteNonQuery();
CloseConnection();
return result;
}
public object ExecuteScalar()
{
OpenConnection();
object value = _command.ExecuteScalar();
CloseConnection();
return value;
}
public TResult ExecuteScalar<TResult>()
{
OpenConnection();
object value = _command.ExecuteScalar();
if (value is TResult)
{
CloseConnection();
return (TResult)value;
}
throw new InvalidCastException();
}
private void OpenConnection()
{
if (_connection.State != ConnectionState.Open)
{
_connection.Open();
}
}
private void CloseConnection()
{
if (_connection.State != ConnectionState.Closed)
{
_connection.Close();
}
}
#endregion
#region IDisposable
public void Dispose()
{
if (_transaction != null)
{
_transaction.Dispose();
}
if (_connection.State != ConnectionState.Open)
{
_connection.Close();
}
}
#endregion
}
public class SqlCommandParameter : ISqlCommandParameter
{
private readonly SqlCommand _command;
public SqlCommandParameter(SqlCommand command)
{
_command = command;
}
public ISqlCommandParameter Add(SqlParameter parameter)
{
_command.Parameters.Add(parameter);
return this;
}
public ISqlCommandParameter Add(string parameterName, object value)
{
_command.Parameters.Add(parameterName, value);
return this;
}
public ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType)
{
_command.Parameters.Add(parameterName, sqlDbType);
return this;
}
public ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType, int size)
{
_command.Parameters.Add(parameterName, sqlDbType, size);
return this;
}
public ISqlCommandParameter Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn)
{
_command.Parameters.Add(parameterName, sqlDbType, size, sourceColumn);
return this;
}
public ISqlCommandParameter AddWithValue(string parameterName, object value)
{
_command.Parameters.AddWithValue(parameterName, value);
return this;
}
}
Sayfa aspx cs kodum- ...using System;
- using System.Data;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Data.SqlClient;
- using System.Web.UI.HtmlControls;
-
- public partial class Kategorisi : System.Web.UI.Page
- {
- string SayfaKategoriId = "";
- string UstKategoriId = "SayfaKategoriId";
-
- protected void Page_Load(object sender, EventArgs e)
- {
- using (var helper = new SqlHelper())
- {
- SayfaKategoriId = Ayarlar.Temizle(RouteData.Values["SayfaKategoriId"].ToString());
- ltrlKategoriAdi.Text = helper.CommandText("Select KategoriAdi from SayfaKategoriler Where SayfaKategoriId=" + SayfaKategoriId + " ").ToValue<string>();
- ltrlKategoriAdi33.Text = helper.CommandText("Select KategoriAdi from SayfaKategoriler Where SayfaKategoriId=" + SayfaKategoriId + " ").ToValue<string>();
- ltrlKategoriAdi44.Text = helper.CommandText("Select KategoriAdi from SayfaKategoriler Where SayfaKategoriId=" + UstKategoriId + " ").ToValue<string>();
- ltrlKategoriAdititle.Text = helper.CommandText("Select KategoriAdi from SayfaKategoriler Where SayfaKategoriId=" + SayfaKategoriId + " ").ToValue<string>();
-
- var dtAltKategoriler = helper.CommandText("SELECT * FROM SayfaKategoriler WHERE UstKategoriId =" + SayfaKategoriId).ToDataTable().DataTableToList<SayfaKategoriler>();
- rptAltKategoriler.DataSource = dtAltKategoriler;
- rptAltKategoriler.DataBind();
-
- DataTable dtSoruCevap = helper.CommandText("Select * from Sayfalar Where SayfaKategoriId=" + SayfaKategoriId).ToDataTable();
- for (int i = 0; i < dtSoruCevap.Rows.Count; i++)
- {
- var temp = helper.CommandText("select * from SayfaResimleri where vitrin = 1 and sayfaId = " + dtSoruCevap.Rows[i][0]).ToDataRow();
- if (temp != null)
- {
- dtSoruCevap.Rows[i]["Resmi"] = "HaberResimleri/600/" + temp["Resim"];
- }
- else
- {
- dtSoruCevap.Rows[i]["Resmi"] = "HaberResimleri/600/yok.jpg";
- }
- }
- dlKategoriler.DataSource = dtSoruCevap;
- dlKategoriler.DataBind();
- }
- }
- protected void rptAltKategoriler_ItemDataBound(object sender, RepeaterItemEventArgs e)
- {
- if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
- {
- var item = e.Item.DataItem as SayfaKategoriler;
- var hrLink = e.Item.FindControl("hrLink") as HtmlAnchor;
- var hrLink2 = e.Item.FindControl("hrLink2") as HtmlAnchor;
- var imgBox = e.Item.FindControl("imgBox") as HtmlImage;
-
- string url = item.Url;
- string text1 = item.KategoriAdi;
- string text2 = item.KategoriAdi + " Kategorisi için tıklatın!";
- string image = "images/kategori-icon.png";
-
- using (SqlHelper helper = new SqlHelper())
- {
- Sayfalar sayfa = helper.CommandText("SELECT TOP 1 * FROM Sayfalar WHERE SayfaKategoriId = " + item.SayfaKategoriId + " ORDER by SayfaId asc").ToDataTable().DataTableToList<Sayfalar>().FirstOrDefault();
-
- if (sayfa != null)
- {
- var katTmp = helper.CommandText("select * from SayfaKategoriler where SayfaKategoriId=" + sayfa.SayfaKategoriId).ToDataRow();
- url = Ayarlar.UrlSeo("sayfakategori_" + katTmp["KategoriAdi"] + "_" + sayfa.SayfaKategoriId + ".html");
- text1 = item.KategoriAdi + " İçindekiler!";
- text2 = item.KategoriAdi + " Listele!";
- var tmp = helper.CommandText("select * from SayfaResimleri where vitrin = 1 and SayfaId=" + sayfa.SayfaId).ToDataRow();
- if (tmp != null)
- {
- image = "HaberResimleri/600/" + tmp["Resim"].ToString();
- }
- else
- {
- image = "HaberResimleri/600/yok.jpg";
- }
- }
- }
-
- imgBox.Src = image;
-
- hrLink.HRef = url;
- hrLink.InnerText = text1;
-
- hrLink2.HRef = url;
- hrLink2.InnerText = text2;
- }
- }
- }