Cannot access a disposed object.
try { string strConn = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString.ToString(); SqlConnection con = new SqlConnection(strConn); FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftpserver"); request.Credentials = new NetworkCredential("username", "pass"); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Stream responsestream = response.GetResponseStream(); StreamReader sr = new StreamReader(responsestream); string line = sr.ReadLine(); string[] value = line.Split(','); DataTable dt = new DataTable(); DataRow row; foreach (string dc in value) { dt.Columns.Add(new DataColumn(dc)); } while (!sr.EndOfStream) { value = sr.ReadLine().Split(','); if (value.Length == dt.Columns.Count) { row = dt.NewRow(); row.ItemArray = value; dt.Rows.Add(row); } } SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock); bc.DestinationTableName = "CSVTest"; bc.BatchSize = dt.Rows.Count; con.Open(); bc.WriteToServer(dt); bc.Close(); con.Close(); sr.Close(); sr.Dispose(); //File.Open(str1, FileMode.Open, FileAccess.Read, FileShare.None); using (var writer = new StreamWriter(responsestream)) { writer.Write(""); } } catch (ObjectDisposedException a) { Console.WriteLine("Caught: {0}", a.Message); } finally { } read complete text file after complete read while loop get error Cannot access a disposed object. Object name: 'System.Net.Sockets.NetworkStream'.

Pradip DaingadePosted Nov 15, 2013, 6:59 AM
foreach(stringdcinvalue){cmd.CommandText ="INSERT INTO Test(ID,FirstName,LastName,BirthDate) VALUES ('"+ value[0] +"','"+ value[1] +"','"+ value[2] +"','"+ value[3] +"')";cmd.Connection = con;con.Open();cmd.ExecuteNonQuery();con.Close();}Pradip DaingadePosted Nov 14, 2013, 5:56 AM
CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)
i have upload the sample project plz check
Jaganathan BantheswaranPosted Nov 14, 2013, 5:44 AM
Pradip DaingadePosted Nov 14, 2013, 1:29 AM
Jaganathan BantheswaranPosted Nov 14, 2013, 1:20 AM
And, you are trying to read the same stream once again. So before reading the same stream, you have to set the Position to 0 as the current stream's position would be at End.
So modify the code like the below one,
SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "CSVTest";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
if (responsestream.CanSeek)
{
responsestream.Seek(0, SeekOrigin.Begin);
}
//File.Open(str1, FileMode.Open, FileAccess.Read, FileShare.None);
using (var writer = new StreamWriter(responsestream))
{
writer.Write("");
}
sr.Close();
sr.Dispose();
Pradip DaingadePosted Nov 14, 2013, 12:19 AM
try {
string strConn = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString.ToString();
SqlConnection con = new SqlConnection(strConn);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftpserver");
request.Credentials = new NetworkCredential("username", "pass");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responsestream = response.GetResponseStream();
StreamReader sr = new StreamReader(responsestream);
string line = sr.ReadLine();
string[] value = line.Split(',');
DataTable dt = new DataTable();
DataRow row;
foreach (string dc in value)
{ dt.Columns.Add(new DataColumn(dc));
}
while (!sr.EndOfStream)
{ value = sr.ReadLine().Split(',');
if (value.Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value;
dt.Rows.Add(row);
}
}
SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "CSVTest";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close();
sr.Close();
sr.Dispose();
//File.Open(str1, FileMode.Open, FileAccess.Read, FileShare.None);
using (var writer = new StreamWriter(responsestream))
{
writer.Write("");
}
}
catch (ObjectDisposedException a)
{
Console.WriteLine("Caught: {0}", a.Message);
}
finally {
}
read complete text file after complete read while loop get error Cannot access a disposed object. Object name: 'System.Net.Sockets.NetworkStream'
Jaganathan BantheswaranPosted Nov 14, 2013, 12:12 AM