قم بتشغيل مهمة مؤقت Sharepoint برمجيًا باستخدام RunNow() باستخدام حساب له حقوق غير إدارية

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/76125

سؤال

لدي مهمة مؤقت مخصصة تمت جدولتها للتشغيل خلال فترة زمنية محددة.

أريد أن أعطي Run Now وظيفة باستخدام النقر على زر من جزء ويب Sharepoint المخصص.إذا قمت بتشغيل وظيفة مؤقت باستخدام حساب مسؤول مزرعة باستخدام الكود الموجود أدناه، فكل شيء يعمل بشكل جيد ولكن أي مستخدم Sharepoint آخر لديه حساب غير مزرعة يحصل على مشكلة رفض الوصول.

var traceJob = (from jobDefinition in MainWebApp.JobDefinitions
                                where jobDefinition.DisplayName == "Sync Timer Job"
                                select jobDefinition).SingleOrDefault();
if (traceJob != null)
{
   traceJob.RunNow();
}

RunWithElevatedPrivilages ولم يكن انتحال الشخصية مفيدًا.هل من الممكن ان يساعدني احد من فضلكم.كيف أسمح لمستخدمي Sharepoint العاديين بتنفيذ الكود أعلاه.

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

المحلول

من أجل التنفيذ RunNow مطلوب حقوق مسؤول المزرعة الأسلوب.عندما تستخدم RunWithElevatedPrivileges الطريقة، يتم تشغيل التعليمات البرمجية في سياق حساب مجمع التطبيقات، والذي عادةً لا يتمتع بحقوق مسؤول المزرعة (ولا ينبغي أن يمتلكها وفقًا لأفضل الممارسات)

لذا فإن الحل هو تشغيل التعليمات البرمجية في سياق بعض المستخدمين الذين لديهم حقوق مسؤول المزرعة.لم أجد حلاً جيدًا للقيام بذلك مباشرة في التعليمات البرمجية لجزء الويب، ولكن من الممكن تشغيله من وظيفة مؤقت أخرى (نظرًا لأن وظائف المؤقت تعمل مع SharePoint Timer Service، التي تتمتع بحقوق مسؤول المزرعة).

لا يعد هذا حلاً أنيقًا للغاية، ولكن يمكنك إنشاء مهمة مؤقت أخرى تتم جدولتها للتشغيل كل دقيقة.تتحقق مهمة المؤقت هذه من نوع ما من العلامات الموجودة على موقعك، والتي يتم تعيينها عند النقر فوق هذا الزر في جزء الويب.إذا تم تعيين العلامة، فسيتم تشغيل مهمة المؤقت الأصلية الخاصة بك باستخدام RunNow طريقة وإعادة تعيين العلم.سيكون لديك تأخير بين الضغط على الزر وتنفيذ مهمة المؤقت الفعلي حوالي دقيقة (أحيانًا أقل)، وهو ما قد يكون جيدًا اعتمادًا على ما تحاول تحقيقه.

عندما تستدعي RunNow الطريقة، لا يتم تنفيذ المهمة على الفور، ولكنها تغير تعريف الوظيفة وتعيين وقت التشغيل التالي إلى اللحظة الحالية في قاعدة البيانات، لذلك سيتم تشغيلها في المرة التالية التي يقوم فيها SharePoint Timer بمعالجة مهام المؤقت.عادةً ما يكون هناك تأخير من 5 إلى 10 ثوانٍ على أي حال قبل تنفيذ المهمة فعليًا.

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