سؤال

أقوم حاليا ببعض الاختبار حيث أحاول حذف مجموعة موقع برمجية. وبالتالي أدركت بعض السلوك الغريب من خلال SharePoint.

لقد استخدمت التعليمات البرمجية التالية لاختبار حذف مجموعة الموقع.

private static void DeleteSiteCollection(string urlSiteToDelete)
{
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
       SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://wssdev06"));
       webApp.Sites.Delete(urlSiteToDelete);                    
       webApp.Update();
    });
}

لذلك عندما استدعاء الطريقة بعنوان URL لجمع موقع موجود سيتم حذف مجموعة المواقع كما هو متوقع. ولكن عندما أسمي الطريقة ب NULL أو السلسلة الفارغة أو عنوان URL غير متصل بجمع موقع ثم يقوم SharePoint بحذف مجموعة المواقع الموجودة أسفل الجذر (على سبيل المثال http: // wssdev06 /).

لست متأكدا مما إذا كنت تفريغ أيضا لاستخدام طريقة spsitecollection.delete () هذه أو إذا لم أفهم conectt لمجموعات المواقع والمسارات المدارة، ولكنني أعتقد أن هذا سلوك غريب ومهذب حقا.

يمكنني إعادة بناء هذا السلوك في تطبيق ويب مختلف ولكن لم يكن لديه خيار لاختبار في بيئة SharePoint أخرى بعد.

هل أفعل شيئا خاطئا أم أن هذا الخطأ؟

تحديث:

لذلك قمت ببعض التحقيقات الأخرى وأدرك أن هذا يجب أن يكون لديه شيء ما يجب القيام به مع فهرس فئة SPSITECollection التي ترجع مجموعة موقع الجذر إذا لم يكن هناك مجموعة من المواقع الموجودة تحت عنوان URL معين. يشبه الخطأ.

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

المحلول

عند طرح SharePoint للعثور على مجموعة مواقع باستخدام عنوان URL، سيفعل من الأفضل إرجاع spsite حتى إذا كان ذلك يعني أنه سيضطر إلى تجاهل جزء من عنوان URL.

في بعض الأحيان هذا شيء جيد جدا. فاي إذا كان لديك عنوان URL الكامل للقائمة وترغب في العثور على spsite و spweb المقابلة.

ولكن يمكن أن تكون خطيرة للغاية كما لو كنت تحذف مجموعات المواقع وربما تحدث خطأ إملائي. إذا كنت ترغب في التأكد من حصولك على جمع المواقع الصحيحة البحث عن spsite أولا وتحقق من أن SPSITE الذي تحصل عليه لديه عنوان URL الذي تريده.

برا

لكل

نصائح أخرى

يبدو الرمز المناسب. سيكون هناك فكرة واحدة إضافة فحص لمجموعة المواقع للتأكد من أن الموقع الذي تريد حذفه موجود في مجموعة المواقع. أدرك أن هذا لا يجيب على سؤالك.

هذا يبدو وكأنه بالضبط المشكلة الموضحة في Microsoft CB 968474 - يمكن stsadm حذف مجموعة موقع الجذر عن غير قصد إذا كان مسار URL غير صحيح يستخدم. على غرار الأعراض الخاصة بك، عند استخدام STSADM - o استعادة "، إذا كان مسار URL غير صحيح، فسيتم محاولة الحذف واستعادة مقابل المسار الصحيح الوحيد الذي هو مجموعة موقع الجذر من عنوان URL."

يبدو لي أن هناك بعض الأخطاء في الموقع الأساسي حذف API، كما كنت تشتبه. ربما، تبحث الخوارزمية عن "أقرب مباراة" بدلا من "التطابق الدقيق".

تعداد مجموعات المواقع والتحقق من صحة مباراة تامة قد تكون أفضل طريقة لتجنب ذلك. ومع ذلك، لن أقول أنك تقوم بأي شيء خاطئ لأن هذا قريب جدا من رمز نموذج Microsoft ويعيد الوثائق الوظيفة أي تحذير حول تمرير عناوين URL غير صالح.

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