تحية طيبة ،
أحد المشاريع التي استوجب ان اشتغل على https ، بطبيعة الحال في فترة الديفيلومنت ، كنت احتاج سيرتفيكت للتجربة ، وعشان اقدر اقوم بهالعمل ، بحثت في الانترنت عن أداة تساعدني في إنشاء سيرتفيكت ، وكانت مايكروسوفت كالعادة الحل ..!
Certificate Creation Tool (Makecert.exe)
makecert -sk XYZ -n “CN=XYZ Company” testXYZ.cer
مثال بسيط ، سيقوم الأمر بإنشاء سيرتفيكيت باسم textXYZ.cer وسيكون الـ CN = XYZ Company
بعد الانشاء قم بتشغيل السيرتفيكيت وسيضيف السيرتفيكيت في الجهاز في certificate store هنا نحتاج شئ اضافي وبسيط وهو القيام بعمل assign للسيرتفيكيت على ال Default web site في الـ IIS
بطبيعة الحال لا بد يكون هناك رابط للـ MSDN يبين جميع الخيارات التي ممكن تضيفها على Certificate حتى لو كانت مثلا تاريخ انتهاء certificate مثلا ..! ( اضغط هنا ) ..
شكرا .!
حصلت مشكلة لدي عندما اردت ان انقل بيانات عالية الحجم من خلال الـ Web Service ، عندما اقول عالية الحجم مقصدي بيانات كثيرة جدا جدا ونحن هناك نتكلم عن عشرة آلاف سجل خلال طلب على الـ WS واحد ، .. واجهت المشكلة هذه وبسبب محدودية كمية نقل البيانات من خلال الـ WS التي تدعمها الWS بشكل عام ..
كانت هناك عدة خيارات لحل المشكلة ، إما مثلا بتغيير طريقة الـ encoding للرسالة المرسلة من الـ WS ، ولكن الحل الأمثل من خلال البحث هو استخدام طريقة نقل البيانات بواسطة تقنية Streaming ، كانت المشكلة التي واجهتني بعد اكتشاف الطريقة في WCF هو ان بسبب استخدامنا للـ HTTPS في نقل البيانات وهذا يقتضي استخدام wsHttpBinding ، وللاسف لا يدعم Streaming ولذلك اضطررنا للقيام بانشاء Custom Binding مع اعادة صيغة الاعدادات لتكون https و ايضا Soap12 بالاضافة للـ Addressing.
عند استخدام BasicHttpBinding وهذا Profile يدعم النسخ القديمة للـ WS في المايكروسوفت ..
<basicHttpBinding>
<binding name="HttpStreaming" maxReceivedMessageSize="67108864"
transferMode="Streamed"/>
</basicHttpBinding>
عندما نود استخدام https
<customBinding>
<binding name="Soap12">
<textMessageEncoding messageVersion="Soap12WSAddressing10" />
<!-- <httpsTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/> -->
<httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
</binding>
</customBinding>
أود التاكيد على نقطة اضافية وهي تستطيع استخدام CustomBinding كـ Https و Http وهو موجود في الاعدادات في الاعلى ولكن مهمش بالاعلى ( Commented ) …
بالاضافة يجب الانتباه أيضا للـ MaxReceivedMessage وهو حجم الرسالة بشكل عام .. وبسبب ان القيمة الاعتيادية ( Default Value ) قليلة نسبيا لذلك يجب تغييرها ..
حاولت ان اكون قدر الاماكن واضح ، ولكن .. العتب على الترجمة .. !