it-swarm.dev

"فشلت محاولة اتصال لأن الطرف المتصل لم يستجب بشكل صحيح بعد فترة من الوقت" باستخدام WebClient

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

فشلت محاولة اتصال لأن الطرف المتصل لم يستجب بشكل صحيح بعد فترة من الزمن ، أو فشل الاتصال المؤسس لأن المضيف المتصل فشل في الاستجابة

هنا هو الكود الخاص بي:

WebClient client = new WebClient();
// Add a user agent header in case the 
// requested URI contains a query.
//client.Headers.Add ("ID", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
Console.WriteLine(s);
data.Close();
reader.Close();

أنا أتلقى خطأ في

Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID);

هل هو بسبب أي إعداد جدار الحماية؟

27
Ram Singh

واجهت مشكلة مشابهة واضطررت إلى تحويل عنوان URL من السلسلة إلى كائن Uri باستخدام:

Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute);

(URLInStringFormat هو عنوان URL الخاص بك) حاول الاتصال باستخدام Uri بدلاً من السلسلة كـ:

WebClient client = new WebClient();
client.OpenRead(myUri);
15
barca_d

ضبط عنوان الوكيل بشكل صريح في web.config حل مشكلتي

<system.net> 
    <defaultProxy> 
            <proxy usesystemdefault = "false" proxyaddress="http://address:port" bypassonlocal="false"/> 
    </defaultProxy> 
</system.net>

حل "رمز خطأ TCP 10060: فشلت محاولة اتصال ..." أثناء استهلاك خدمة ويب

12
Mahmoud Farahat

أعلم أن هذه التذكرة قديمة ، لكنني واجهت هذه المشكلة وأعتقد أنني سأنشر ما كان يحدث لي وكيف تم حلها:

في خدمتي كنت أتصل كان هناك اتصال بخدمة ويب أخرى. ومثل goof ، نسيت أن أتأكد من أن إعدادات DNS كانت صحيحة عندما نشرت خدمة الويب ، وبالتالي فإن خدمة الويب الخاصة بي ، عندما نشرت ، كانت تحاول الاتصال من api.myproductionserver.local ، بدلاً من api.myproductionserver.com. كانت خدمة الويب الخلفية التي كانت تسبب المهلة.

على أي حال ، أعتقد أنني سوف تمر هذا على طول.

2
Corran Horn

هل يمكن الوصول إلى عنوان URL الذي يتيحه هذا الرمز في المتصفح؟

http://" + Request.ServerVariables["HTTP_Host"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID

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

ثم تحقق من وجود مشكلات متعلقة بجدار الحماية.

2
Ehsan

كان لي هذه المشكلة. عملت التعليمات البرمجية بشكل جيد عند تشغيلها محليًا ولكن ليس عند الخادم باستخدام psPing ( https://technet.Microsoft.com/en-us/sysinternals/psping.aspx ) أدركت أن منفذ التطبيقات لا يُرجع أي شيء. تبين أن مشكلة جدار الحماية. لم أقم بتمكين منفذ التطبيقات في جدار حماية Windows.

أدوات إدارية> جدار حماية Windows مع Advanced Security أضاف منفذ التطبيقات الخاص بي إلى القواعد الواردة وبدأ العمل.

لقد تغير رقم منفذ التطبيق بطريقة أو بأخرى ، لذلك استغرق الأمر بعض الوقت لمعرفة ما كان يحدث - لذا اعتقدت أنني سأشارك هذا الاحتمال في حالة توفير وقت لشخص آخر ...

1
SteveL
  1. الاحتمال الأول: يجب أن تكون السلسلة المشفرة في ملف Web.config ذي الصلة كما تم إدخالها في سلسلة الاتصال (كما هو موضح أعلاه) وأيضًا ، عند تغيير أي شيء في "محرر التسجيل" أو regedit.exe (كما هو مكتوب في Run) ، ثم بعد أي تغيير ، أغلق محرر التسجيل وأعد ضبط خدمات معلومات الإنترنت عن طريق كتابة IISRESET في Run. ثم قم بتسجيل الدخول إلى البيئة الخاصة بك.

  2. اكتب Services.msc قيد التشغيل وتحقق من:

    1. تم بدء تشغيل حالة خدمات حالة ASP.NET. إذا لم يكن كذلك ، ثم انقر بزر الماوس الأيمن فوقها ، من خلال "خصائص" ، قم بتغيير نوع بدء التشغيل الخاص به إلى تلقائي.

    2. يتم سرد خدمة Iris ReportManager الخاصة بهذا البنك المعين على أنها بدأت أم لا. إذا كان قيد التشغيل ، فسيظهر "خدمة إدارة تقارير IRIS" كما بدأت في القائمة. إذا لم يكن كذلك ، فقم بتشغيله بالنقر فوق IRIS.REPORTMANAGER.EXE

    ثم مرة أخرى إعادة تعيين IIS

1
Syed Arbab Ahmed

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

1
Illusions

أعلم أن هذا المنشور تم نشره منذ 5 سنوات ، لكني واجهت هذه المشكلة مؤخرًا. قد يكون سبب قيود شبكة الشركة. لذا فإن الحل الخاص بي هو السماح WebClient بالانتقال إلى الخادم الوكيل لإجراء المكالمة. هنا هو الرمز الذي عملت بالنسبة لي. آمل أن يساعد.

        using (WebClient client = new WebClient())
        {
            client.Encoding = Encoding.UTF8;
            WebProxy proxy = new WebProxy("your proxy Host IP", port);
            client.Proxy = proxy;
            string sourceUrl = "xxxxxx";
            try
            {
                using (Stream stream = client.OpenRead(new Uri(noaaSourceUrl)))
                {
                    //......
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
0
Allen Z.

إضافة كتلة التعليمات البرمجية التالية في web.config يحل مشكلتي

 <system.net>
    <defaultProxy enabled="false" >
    </defaultProxy>
  </system.net>
0
B.Dikmenn

قد تكون المشكلة من خلال إعدادات الخادم الوكيل في الخادم. يمكنك محاولة عن طريق تعطيل إعداد الوكيل ،
<defaultProxy enabled="false" />

0
Jitendra G2