سؤال

كان لدي خدمة ويب قمت بتحويلها إلى خدمة WCF بنفس امتداد ASMX. لدي basichttpbinding لأن خدمتي تتحدث إلى العديد من العملاء مثل Java و Perl وما إلى ذلك.

كان لدي التحقق الذي كان httpcontext.current فيه. لكنني أعلم أن هذا لن يعمل في خدمة WCF. أحاول استخدام requestContext أو OperationContext لكنني غير قادر على القيام بذلك. حاولت استخدام

ServiceBehavior (InstancecontextMode = InstancecontextMode.persession)

لكن لم يساعد. أنا أتصل بخدمتي من Soapui للاختبار.

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

المحلول

حسنًا ، لذلك وجدت الحل. هناك بعض الطرق للحصول على سياق httpcontext.current. إما يمكننا استخدام OperationContext أو يمكننا استخدام وضع ASPNETCOMPATIBITIONSERQUIREMENTS المحدد إلى المسموح به و ASPNETCOMPATIBLEENABLITIOND تم تعيينه على TRUE في web.config.

لحالتي حيث قمت بتحويل خدمة ASMX إلى خدمة WCF ، اضطررت أيضًا إلى تعديل معالج Httphandler لإزالة وإضافة مسار ASMX إلى System.ServicEmodel.activation.httphandler.

نصائح أخرى

من الأفضل استخدام برنامج التشغيل Context أثناء استخدام خدمات WCF. نظرًا لأنك ستحصل دائمًا على httpcontext.current.items ، فهي دائمًا لاغية والتي تعمل فقط أثناء ASP.NET. لذا أضف الرمز التالي:-

OperationContext.Current.Extensions.Add(extension);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top