تم إغلاق الاتصال الأساسي: حدث خطأ غير متوقع على التلقي

StackOverflow https://stackoverflow.com/questions/875348

سؤال

وعندما أحاول برنامجي على الجهاز win2k8 بلدي تشغيله بشكل جيد ولكن على الفوز 2K3 انه يعطيني هذا الخطأ أن رسالة الخطأ

وهنا الرمز الذي 'إنشاء الخطأ

WebClient wc = new WebClient(); 
wc.DownloadFile("ftp://ftp.website.com/sample.zip");

وهناك جزء غريب. اذا كنت تعطيل جدار الحماية على الخادم تماما. يختفي الخطأ. لكنها لا تزال الأخطاء إذا ط إضافة البرنامج إلى قائمة الاستثناءات وتشغيل جدار الحماية.

ويكون البحث على شبكة الإنترنت لعدة أيام، لا يمكن ايجاد أي حل.

هل كانت مفيدة؟

المحلول

ويجب عليك أن تحاول استخدام الوضع السلبي للFTP. فئة WebClient لا تسمح بذلك، ولكن FtpWebRequest يتم يفعل.

FtpWebRequest request = WebRequest.Create("ftp://ftp.website.com/sample.zip") as FtpWebRequest;
request.UsePassive = true;
FtpWebResponse response = request.GetResponse() as FtpWebResponse;
Stream ftpStream = response.GetResponse();
int bufferSize = 8192;
byte[] buffer = new byte[bufferSize];
using (FileStream fileStream = new FileStream("localfile.zip", FileMode.Create, FileAccess.Write))
{
    int nBytes;
    while((nBytes = ftpStream.Read(buffer, 0, bufferSize) > 0)
    {
        fileStream.Write(buffer, 0, nBytes);
    }
}

نصائح أخرى

يرجى نشر استثناء كاملة، بما في ذلك أي InnerException:

try
{
    WebClient wc = new WebClient(); 
    wc.DownloadFile("ftp://ftp.website.com/sample.zip");
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString()); // Or Debug.Trace, or whatever
    throw;    // As if the catch were not present
}

وكان لي مشكلة مشابهة (أي بروتوكول نقل الملفات) وحلا مختلفا

وأحرز البيئة خادم الإنتاج آمنة حتى أن الخادم لا يمكن أن تصل إلى URL.

اختبار سريع هو استخدام متصفح على منطقة الجزاء، ومعرفة ما إذا كان يمكنك التنقل إلى رابط.

وآمل أن يساعد هذا شخص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top