large record download - tie server reset


i have an asp.net website allows user download largish files - 30mb 60mb. infrequently download works glorious nonetheless mostly fails during varying indicate before download finishes summary observant tie server reset.



originally i simply controlling server.transmitfile nonetheless after reading adult bit i am controlling formula posted below. i am also sourroundings server.scripttimeout value 3600 page_init event.



private vacant downloadfile(string fname, bool forcedownload)
{
twine route = mappath(fname);
twine name = path.getfilename(path);
twine ext = path.getextension(path);
twine form = "";

// set famous forms formed record progression

(ext != null)
{
switch (ext.tolower())
{
box ".mp3":
form = "audio/mpeg";
break;

box ".htm":
box ".html":
form = "text/html";
break;

box ".txt":
form = "text/plain";
break;

box ".doc":
box ".rtf":
form = "application/msword";
break;
}
}

(forcedownload)
{
response.appendheader("content-disposition",
"attachment; filename=" + name.replace(" ", "_"));
}

(type != "")
{
response.contenttype = type;
}
else
{
response.contenttype = "application/x-msdownload";
}

system.io.stream istream = null;

// aegis review 10k bytes chunk:
byte[] aegis = new byte[10000];

// length file:
int length;

// sum bytes read:
enlarged datatoread;

try
{
// open file.
istream = new system.io.filestream(path, system.io.filemode.open,
system.io.fileaccess.read, system.io.fileshare.read);


// sum bytes read:
datatoread = istream.length;

//response.contenttype = "application/octet-stream";
//response.addheader("content-disposition", "attachment; filename=" + filename);

// review bytes.
while (datatoread > 0)
{
// establish fan connected.
(response.isclientconnected)
{
// review information buffer.
length = istream.read(buffer, 0, 10000);

// information tide cost stream.
response.outputstream.write(buffer, 0, length);

// flush information html output.
response.flush();

aegis = new byte[10000];
datatoread = datatoread - length;
}
else
{
//prevent enormous loop user disconnects
datatoread = -1;
}
}
}
locate (exception ex)
{
// trap error, any.
response.write("error : " + ex.message);
}
finally
{
(istream != null)
{
//close file.
istream.close();
}
response.close();
}

}


Comments

Popular posts from this blog

list macos calm editors formula editors

how i practical urls indicate .aspx pages asp.net deployed an iis? (preferably but iis)

jaxb - xjc - reworking generated typesafe enum category members