سؤال

لقد قمت بإنشاء ونشر خدمة WCF في SharePoint وأرسل الطلبات باستخدام JQuery.كل شيء يعمل بشكل جيد باستثناء المواقع الفرعية.

لنفترض أن لدي عنواني URL للخدمة:

 - http://localhost:1111/_vti_bin...../MethodName
 - http://localhost:1111/subsite/_vti_bin...../MethodName  

عندما أستخدم عنواني URL هذين، فإن ملف SPContext.Current.Site هو نفسه وهو الصحيح.
لكن ال SPContext.Current.Web هو نفسه الذي هو غير صحيح.باستخدام عنوان URL الثاني SPWeb يجب أن يكون الكائن هو شبكة الويب الفرعية وليس شبكة الويب الجذرية.

كيف يمكنني الحصول على الموقع الفرعي باعتباره SPWeb هدف؟هل أحتاج دائمًا إلى تمرير عنوان URL للويب كمعلمة لطريقة WCF؟

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

المحلول

وبعد البحث توصلت إلى أن SPContext.Current.Web سوف يعود دائما RootWeb لذلك أحتاج إلى عنوان URL لشبكة الويب الفرعية المحددة.

لتجنب تمرير عنوان URL لـ SPWeb إلى كل أسلوب WCF حيث أحتاج إلى كائن SPWeb، يمكنني القيام بما يلي:

أقوم بتشغيل خدمة WCF الخاصة بي في وضع التوافق مع ASP.NET حتى أتمكن من استخدام HttpContext كائن، ويمكنني استخدامها HttpContext.Current.Request.RawUrl.تقوم هذه الخاصية بإرجاع كل شيء في سلسلة URL بعد اسم المجال.ثم يمكنني اقتطاع هذه السلسلة للحصول على عنوان URL النسبي للويب الفرعي وتمريره إلى ملف OpenWeb() طريقة.

مثال:

من جانب العميل، تكون وسيطة URL لاستدعاء JQuery AJAX هي:

 http://localhost:1111/subsite/_vti_bin...../MethodName

على جانب الخادم إذا كنت تستخدم HttpContext.Current.Request.RawUrl انا حصلت:

/subsite/_vti_bin...../MethodName

ثم بعد أن أقوم باقتطاع هذه السلسلة أقوم بتمرير ملف /subsite إلى OpenWeb() طريقة.

أي أفكار أخرى هي موضع تقدير كبير.

نصائح أخرى

كان لدي نفس الحالة.لكنني أخذت عنوان URL من هنا: giveacodicetagpre.

لذلك كنت قادرا على إنشاء كائن SPSITE: giveacodicetagpre.

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