إرسال طلب POST:System.Net.WebException
-
05-07-2019 - |
سؤال
هذه ليست المرة الأولى التي أستخدم فيها هذه الطريقة لإرسال طلب POST، ولم أواجه أية مشكلات مطلقًا:
public static Stream SendPostRequest(Uri uri, byte[] postData)
{
var request = WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, 0, postData.Length);
requestStream.Close();
return request.GetResponse().GetResponseStream();
}
عند request.GetRequestStream() أحصل على System.Net.WebException:تم إغلاق الاتصال الأساسي:حدث خطأ غير متوقع أثناء الإرسال.
والأكثر إثارة للاهتمام هو أنه يعمل بشكل جيد على بعض الأجهزة، لكنه لا يعمل على جهازي (Windows 7 Beta) وخادم الإنتاج (Windows Server 2008).معلومات اكثر:
يعمل - ويندوز إكس بي - .NET 2.0
يعمل - ويندوز إكس بي - .NET 3.5
يعمل - ويندوز سيرفر 2003 - .NET 3.0
لا يعمل - نظام التشغيل Windows Vista - .NET 3.5
لا يعمل - Windows Server 2008 - .NET 3.5
لا يعمل - Windows 7 Beta - .NET 3.5 SP1
حاول:
- مجموعة من الاشياء من هنا, لا شيء ساعد.
- استخدام العميل على شبكة الإنترنت, ، لا شيء تغير.
- التغيير والتبديل هذه خيارات, ، لكن لم ألاحظ أي فرق ملحوظ.
- حاول واير شارك.أداة جيدة جدا.
[تم حلها.نوعا ما]
لقد نسيت أن أذكر ذلك، لكن أوري كان https...حاولت http وعملت.لا أستطيع أن أصدق، لم أحاول ذلك عاجلا ...
ومع ذلك، سأكون ممتنًا لو قام شخص ما بتسليط الضوء على هذا الوضع برمته.
المحلول
ستكون خطتي الأولى للهجوم هي الاستخدام واير شارك لمعرفة ما يحدث على مستوى الشبكة في كل حالة.تعرف على ما يرسله كل جهاز.
لقد لاحظت أيضًا وجود اختلافات بين أنظمة التشغيل، ولكن هل تحتوي جميعها على نفس الإصدار الدقيق من .NET (وصولاً إلى SP) المثبت؟
نصائح أخرى
هل تعمل GETs؟ربما تكون مشكلة في تكوين الوكيل (proxycfg
إلخ).
أيضًا - لتبسيط الأمور (تقليل عدد العناصر المجهولة)، فكر في استخدامها WebClient
للقيام بهذا المنصب:
using (WebClient client = new WebClient())
{
client.Headers.Add("content-type","application/x-www-form-urlencoded");
client.UploadData(address, data);
// or more simply
client.UploadValues(address, nameValuePairs);
}
حاول تعديل واحد أو أكثر من الخيارات التالية:
- أرسل تشوكد
- السماح بإعادة التوجيه التلقائي
- ترميز النقل
حاول أيضًا ملاحظة الاختلافات بينهما من خلال تكويناتك المختلفة.