WebDav - grosse Dateien uploaden

09/10/2007 - 13:16 von Alois Seidler | Report spam
Hallo NG,
cih versuche eine Datei (150MB) mit folgendem Code auf ein
WebDAV-Verzeichnis zu kopieren. Leider erhalten ich bei < req.GetResponse();

die weiter unten aufgeführte Fehlermeldung. Ich finde einfach keine Lösung.


Kann mir hier jemand unter die Arme greifen.

mfg
Alois Seidler

try
{

FileInfo fInfo = new FileInfo(localFile);
string FileSizeDescription = GetFileSize(fInfo.Length);
NetworkCredential cred = new NetworkCredential(
UserrName, password, domain);

HttpWebRequest req =
(HttpWebRequest)WebRequest.Create(uploadUrl);

req.Method = "PUT";
//req.AllowWriteStreamBuffering = true;

req.Credentials = cred;
req.Timeout = -1;
req.KeepAlive = true;
req.ReadWriteTimeout = 3000000;
// Retrieve request stream
Stream reqStream = req.GetRequestStream();

// Open the local file
FileStream rdr = new FileStream(localFile, FileMode.Open);
// Allocate byte buffer to hold file contents
byte[] inData = new byte[4096];

// loop through the local file reading each data block
// and writing to the request stream buffer
int bytesRead = rdr.Read(inData, 0, inData.Length);
long SentBytes = bytesRead;
while (bytesRead > 0)
{
reqStream.Write(inData, 0, bytesRead);
reqStream.Flush();
bytesRead = rdr.Read(inData, 0, inData.Length);

SentBytes = SentBytes + bytesRead;

//if (SentBytes > 10000000)
//{
// goto exitWhileStatement0;
//}
String SummaryText = String.Format("{0} / {1}",
GetFileSize(SentBytes), FileSizeDescription);

this.lblProgress.Text = SummaryText;
Application.DoEvents();
}
exitWhileStatement0:
rdr.Close();
reqStream.Close();

req.GetResponse();
}
catch (Exception ex)
{
textBox1.Text = ex.ToString();
}
finally
{this.Cursor = Cursors.Default; }




System.Net.WebException: Die zugrunde liegende Verbindung wurde geschlossen:
Unerwarteter Fehler beim Senden.. > System.IO.IOException: In die
Übertragungsverbindung können keine Daten geschrieben werden: Ein
Socketvorgang konnte nicht ausgeführt werden, da dem System Pufferspeicher
fehlte oder eine Warteschlange voll war. >
System.Net.Sockets.SocketException: Ein Socketvorgang konnte nicht ausgeführt
werden, da dem System Pufferspeicher fehlte oder eine Warteschlange voll war
bei System.Net.Sockets.Socket.MultipleSend(BufferOffsetSize[] buffers,
SocketFlags socketFlags)
bei System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[]
buffers)
Ende der internen Ausnahmestapelüberwachung
bei System.Net.Sockets.NetworkStream.MultipleWrite(BufferOffsetSize[]
buffers)
bei System.Net.Connection.Write(ScatterGatherBuffers writeBuffer)
bei System.Net.ConnectStream.ResubmitWrite(ConnectStream oldStream,
Boolean suppressWrite)
Ende der internen Ausnahmestapelüberwachung
bei System.Net.HttpWebRequest.GetResponse()
bei fileTransferHTTP.Form1.UploadFileBinary(String localFile, String
uploadUrl) in
 

Lesen sie die antworten

#1 RalfWeb1
09/10/2007 - 17:57 | Warnen spam
Hallo Alois,

Zu der Fehlermeldung kann ich nichts sagen
aber
in der while-Schleife steht: [ bytesRead = rdr.Read(inData, 0,
inData.Length); ]

meintest du evtl.: [ bytesRead = rdr.Read(inData, SentBytes,
inData.Length); ] ?

Sonst wird doch die Schleife niemals beendet!?

MfG, Ralf...

Ähnliche fragen