الجمعة، 28 ديسمبر 2012

مشكلة في صفحة ذاكرة التخزين المؤقتة لإخراج مجموعة المواقع المشتركة



بعد الترقية من شيربوينت 2007 إلى شيربوينت 2010 يظهر الخطأ التالي عند زيارة الصفحة "ذاكرة التخزين المؤقتة لإخراج مجموعة المواقع المشتركة" من صفحة إعدادات الموقع لمجموعة المواقع Site Collections

Event code: 3005
Event message: An unhandled exception has occurred.
Exception information:
Exception type: SPException
Exception message:
القائمة غير موجودة.
تحتوي الصفحة المحددة على قائمة غير موجودة. قد يكون تم حذفها من قِبَل مستخدم آخر.
Request path: /_Layouts/sitecachesettings.aspx
User host address: fe80::1882:1474:3f57:ffe9
القائمة غير موجودة.
تحتوي الصفحة المحددة على قائمة غير موجودة. قد يكون تم حذفها من قِبَل مستخدم آخر.
Is impersonating: False
Stack trace: at Microsoft.SharePoint.SPGlobal.HandleComException(C OMException comEx)
at Microsoft.SharePoint.Library.SPRequest.GetListsWit hCallback(String bstrUrl, Guid foreignWebId, String bstrListInternalName, Int32 dwBaseType, Int32 dwBaseTypeAlt, Int32 dwServerTemplate, UInt32 dwGetListFlags, UInt32 dwListFilterFlags, Boolean bPrefetchMetaData, Boolean bSecurityTrimmed, Boolean bGetSecurityData, Boolean bPrefetchRelatedFields, ISP2DSafeArrayWriter p2DWriter, Int32& plRecycleBinCount)
at Microsoft.SharePoint.SPListCollection.EnsureListsD ata(Guid webId, String strListName)
at Microsoft.SharePoint.SPListCollection.ItemByIntern alName(String strInternalName, Boolean bThrowException)
at Microsoft.SharePoint.SPListCollection.get_Item(Gui d uniqueID) at Microsoft.SharePoint.Publishing.CacheProfile.<>c__ DisplayClass4.<InternalGetCacheProfiles>b__0() at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4 .<RunWithElevatedPrivileges>b__2() at Microsoft.SharePoint.Utilities.SecurityContext.Run AsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPri vileges(WaitCallback secureCode, Object param) at Microsoft.SharePoint.SPSecurity.RunWithElevatedPri vileges(CodeToRunElevated secureCode)
at Microsoft.SharePoint.Publishing.CacheProfile.Inter nalGetCacheProfiles(SPSite site) at Microsoft.SharePoint.Publishing.Internal.CodeBehin d.SiteCacheSettingsPage.InitializeCacheProfileUI(I nt32 cacheProfileId, SPSite site, DropDownList profiles, Label desc, Boolean authenticated) at Microsoft.SharePoint.Publishing.Internal.CodeBehin d.SiteCacheSettingsPage.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Custom event details:

لحل هذه المشكلة يجب اتباع الخطوات التالية:
  1. أخذ نسخة احتياطية عن مجموعة المواقع التي سيتم التعديل عليها.
  2. إيقاف الميزة "نشر البنية الأساسية لـ SharePoint Server" أو Office Sharepoint Server Publishing Infrastructure من ميزات مجموعة الموقع.
  3. إعادة تشغيل الميزة "نشر البنية الأساسية لـ SharePoint Server" أو Office Sharepoint Server Publishing Infrastructure من ميزات مجموعة الموقع.


الثلاثاء، 25 ديسمبر 2012

حل مشكلة إعدادات الذاكرة المخبئية Object Cache في شيربوينت 2010



عند إنشاء تطبيق ويب Web Application جديد على شيربوينت 2010 ستلاحظ ظهور التحذير التالي في سجلات ويندوز

Object Cache: The super reader account utilized by the cache does not have sufficient permissions to SharePoint

databases.
To configure the account use the following command 'stsadm -o setproperty -propertyname portalsuperreaderaccount

-propertyvalue account -url webappurl'. It should be configured to be an account that has Read access to the

SharePoint databases.
Additional Data:
Current default super reader account: NT AUTHORITY\LOCAL SERVICE

لحل هذه المشكلة يجب اتباع الخطوات التالية:
1 - افتح موقع الإدارة المركزي Central Administration
2 - من المجموعة Application Management اختر Manage web applications
3 - حدد تطبيق الويب الذي يسبب المشكلة السابقة
4 - من أيقونة شريط الأدوات العلوي اختر User Policy
5 - اضغط على Add Users ومن ثم التالي Next
6 - أضف مستخدم مع الصلاحية تحكم كامل Full Control
7 - أضف مستخدماً آخر مع الصلاحية Full Read
8 - نفذ الأوامر التالي باستخدام سطر الأوامر PowerShell

كود:
$wa = Get-SPWebApplication “http://WEB_APPLICATION_URL"
$wa.Properties["portalsuperuseraccount"] = "اسم المستخدم كما يظهر في شاشة User Policy تماماً"
$wa.Properties["portalsuperuseraccount"] = "اسم المستخدم كما يظهر في شاشة User Policy تماماً"
$wa.Update()
في حال تريد إلغاء استخدام الإعدادات السابقة استخدم الأوامر التالية:

كود:
$wa = Get-SPWebApplication “http://WEB_APPLICATION_URL"
$wa.Properties.Remove("portalsuperuseraccount")
$wa.Properties.Remove("portalsuperreaderaccount")
$wa.Update()


الجمعة، 21 ديسمبر 2012

لم يتم تثبيت أحد الحقول بشكل صحيح. الرجاء الذهاب إلى قائمة إعدادات الصفحة لحذف الحقل



بعد تنفيذ عملية الترقية من شيربوينت 2007 إلى شيربوينت 2010 قد يظهر الخطأ التالي:

Field type is not installed properly. Go to the list settings page to delete this field

وهذا الخطأ يعني أن هناك مشكلة في أحد الحقول سواء ضمن أحد أنواع المحتويات Content Types أو إحدى القوائم تحتوي على حقل لم يتم تثبيته بشكل صحيح أثناء عملية الترقية, طبعاً الخطأ عام جداً ولا يشير إلى القائمة التي يحدث فيها الخطأ أو الموقع, ولكن أحد أسباب هذا الخطأ بعد الترقية من شيربوينت 2007 إلى شيربوينت 2010 هي حقل اسمه GroupID في قائمة اسمها قائمة العلاقات Relationships List, حيث أن هذا الحقل نوعه سطر نص مفرد في 2007 وعند تنفيذ عملية الترقية يصبح اسمه GroupGuid من النوع Guid كما هو واضح في الشكل التالي:


ولسبب ما عند تنفيذ عملية الترقية من 2007 إلى 2010 فإن هذا الحقل لا تتم عملية ترقيته بالشكل الصحيح فيبقى اسمه GroupID من النوع سطر نص مفرد. لذلك عند فتح صفحة "إدارة المحتوى والبينة" من قائمة إجراءات الموقع أو عند تحرير وحفظ أي صفحة فإن الخطأ السابق يظهر.

كيف يتم حل المشكلة؟
حل هذه المشكلة يكمن في تغيير اسم الحقل GroupID إلى GroupGuid ونوعه من سطر نص مفرد إلى Guid, لكن تنفيذ هذه العملية بشكل يدوي تقريباً غير ممكنة إضافة إلى أن النوع Guid غير متوفر عند إنشاء عمود لإضافته إلى قائمة أو نوع محتوى. لذلك يجب اتباع الخطوات التالية لحل المشكلة:

1. يجب الحصول على نسخة احتياطية عن الموقع الذي تعمل عليه بحيث يمكن استرجاعه بشكل صحيح في حال أن الخطوات التالية لم تعمل بشكل صحيح.
2. القائمة Relationships List هي قائمة مخفية لا تظهر إلا باستخدام SharePoint Designer 2010, حيث يتم إنشاؤها في الموقع الرئيسي لمجموعة المواقع:


3. يجب حذف هذه القائمة بالضغط على زر Delete وحتى لو ظهرت رسالة خطأ فلا بأس, اضغط على اسم القائمة واحذف كل محتوياتها.
4. ثبت البرنامج http://spdeploymentwizard.codeplex.com المجاني على نفس الخادم الذي يحتوي على بيئة عمل شيربوينت 2010. وهذا البرنامج يعمل مع شيربوينت 2007 وشيربوينت 2010 لذلك ستجد نسخة تدعم منصة العمل 32Bit والتي تخص شيربوينت 2007. ويجب تثبيت النسخة COB.SharePoint.Utilities.DeploymentWizard.Installe r_x64.msi على خادم شيربوينت 2010 الذي يحتوي على المشكلة.





5. بعد تثبيت البرنامج السابق، يجب فتحه من المسار التالي:

C:\Program Files\Chris O'Brien\SharePoint Content Deployment Wizard

6. قبل فتح الملف SPContentDeploymentWizard.exe يجب نسخ الشيفرة التالية إلى الملف SPContentDeploymentWizard.exe.config:

كود HTML:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <switches>
      <add name="COB.SharePoint.Utilities.ContentDeploymentWizard" value="0"/>
    </switches>
    <trace autoflush="true" indentsize="2">
      <listeners>
        <add name="WizardListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Wizard.log">
        </add>  
      </listeners>
    </trace>    
  </system.diagnostics>
  <!-- Uncomment this section to use the Wizard with SharePoint 2010 - this will ensure the SharePoint 2010 assemblies are used.-->
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
        <assemblyIdentity name="Microsoft.SharePoint" publicKeyToken="71e9bce111e9429c" culture="neutral" />
        <bindingRedirect oldVersion="11.0.0.0" newVersion="14.0.0.0" />
      </dependentAssembly>
      <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
        <assemblyIdentity name="Microsoft.SharePoint.Publishing" publicKeyToken="71e9bce111e9429c" culture="neutral" />
        <bindingRedirect oldVersion="11.0.0.0" newVersion="14.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

</configuration>

7. ما الهدف من هذا البرنامج؟ الهدف هو نسخ القائمة Relationships List من مجموعة مواقع Site Collections تم إنشاؤها مباشرة تحت بيئة شيربوينت 2010 مباشرة بدون ترقية بحيث تحتوي على الحقل GroupGuid, والخطوات التالية هي لأخذ نسخة عن هذه القائمة من موقع يعمل بشكل صحيح:








8. بعد تنفيذ الخطوات السابقة نكون قد نفذنا عملية تصدير للقائمة Relationships List بشكل كامل.
9. في هذه الخطوات سيتم استيراد نسخة القائمة التي حصلنا عليها في الخطوات السابقة إلى مجموعة المواقع التي تحتوي على المشكلة:



بعدها اضغط Finish لإتمام العملية.

بعد تنفيذ العملية السابقة يجب أن تكون مشكلة العمود GroupID قد تم حلها بشكل نهائي.


الأربعاء، 19 ديسمبر 2012

القائمة المنسدلة تعيد قيمة أول عنصر دائماً


في آخر مشروع عملنا عليه ظهرت مشكلة غريبة تتعلق بالقائمة المنسدلة Drop Down List, وهي أن قيمة الخاصية:

ddlCountries.SelectedItem.Text

دائماً هي نص العنصر الأول في القائمة :), طبعاً تم تجريب كل شيء يمكن تخيله وكانت المشكلة ببساطة أن جميع قيم عناصر القائمة هي نفسها أي قيمة الخاصية Value هي نفسها للجميع لذلك ولسبب ما فإن القائمة المنسدلة تعيد قيمة نص العنصر الأول دائماً

استمتع :)


الثلاثاء، 18 ديسمبر 2012

المحافظة على شكل شيربوينت 2007 عند الترقية إلى شيربوينت 2010



بعد تنفيذ عملية الترقية من شيربوينت 2007 إلى 2010, أكثر شيء يجب أن تقلق بشأنه هو التصميم حيث أن الانتقال إلى طريقة عرض وستايلات وتصاميم 2010 قد يكلف الكثير من العمل! لكن ماذا لو أن العميل يريد أن تبقى واجهات وطريقة
  • عرض الصفحات وإجراءات الموقع وكيفية إضافة أجزاء الويب على حالها بعد الترقية أي بنفس الشكل, لتنفيذ ذلك اتبع الخطوات التالية:
  • 1 - لا تنفذ الترقية الظاهرية من صفحة إعدادات الموقع
  • 2 - عند إنشاء موقع جديد تحت بيئة عمل شيربوينت 2010 الجديدة عندها سيتم استخدام الإصدار 4 لشكل الموقع الجديد حتى لو لم يتم تنفيذ الترقية الظاهرية Visual Upgrade, ولحل هذه النقطة التي قد تكون مشكلة لأنك ستضطر عندها لترقية الصفحة الرئيسية Master Page للموقع من 2007 إلى 2010 أو إنشاء صفحة رئيسية Master Page إصدار 2010 خاصة بالمواقع الجديدة. لكن يوجد حل بسيط وهو بإعادة تهيئة إصدار الموقع الجديد إلى 2007 بتنفيذ الأمر التالي على سطر الأوامر PowerShell:


$web = Get-SPWeb http://WEB_SITE_URL
$web.UIVersion = 3
$web.UIVersionConfigurationEnabled = $true
$web.Update()
ويجب الانتباه إلى أن الأمر السابق يتم تنفيذه على مستوى الموقع SPWeb وليس على مستوى مجموعة المواقع Site Collection


الأربعاء، 12 ديسمبر 2012

الحالات التي تفشل فيها عملية تثبيت شيربوينت 2013 (15) والحالات الغير مدعومة



قبل البدء بعملية تثبيت شيربوينت 2013 (15) يجب مراجعة الحالات التالية التي تفشل فيها عملية التثبيت أو أنها غير مدعومة من قبل مايكروسوفت في حال حدوث أخطاء:

1 - عند تثبيت شيربوينت 2013 على قرص Drive تمت تهيئته لاستخدام الصيغة Resilient File System(ReSF) حيث تظهر رسالة الخطأ التالية:

datetime::[940] Catalyst file system check failed: The path root D:\ is not NTFS
datetime::[940] Showing message Title: 'Setup Warning', Message: 'The install location must be on a drive formatted with NTFS. Select another drive.'
datetime::[940] Message returned: 1


2 - عند محاولة تثبيت شيربوينت 2013 على جهاز لا يعمل تحت نطاق Domain ثل جهازك الشخصي.
3 - عند تثبيت شيربوينت 2013 على خادم يُستخدم كمتحكم للنطاق Domain Controller, ويمكن دعمه فقط في بيئة العمل التطويرية وليس بيئات العمل الحقيقية.
4 - عند تثبيت شيربوينت 2013 على النسخة Windows Web Server.
5 - عند تثبيت شيربوينت 2013 على جهاز افتراضي Virtual Machine تم ضبط إعدادات الذاكرة لتكون ديناميكية Dynamic Memory (ويمكن مراجعة الرابط التالي لمعرفة الإعدادات الأفضل على بيئة افتراضية)


الأحد، 9 ديسمبر 2012

MetadataNavigationContext Page_InitComplete: No XsltListViewWebPart was found



بعد تنفيذ عملية الترقية من شيربوينت 2007 إلى شيربوينت 2010 تظهر مشكلة بعد الترقية الظاهرية Visual Upgrade من إعدادات الموقع, تظهر مشكلة عند محاولة تحرير أي صفحة ضمن مكتبة الصفحات Pages للصفحات القديمة, وعند البحث في ملفات تعقب أخطاء شيربوينت تظهر الرسالة التالية:

MetadataNavigationContext Page_InitComplete: No XsltListViewWebPart was found on this page

لحل هذه المشكلة يجب تعديل قيمة العمود tp_WebPartTypeId إلى القيمة 874F5460-71F9-FECC-E894-E7E858D9713E في الجدول AllWebParts في قاعدة بيانات المحتوى Content Database الخاصة بمجوعة المواقع Site Collection كما يلي:

UPDATE AllWebParts
SET tp_WebPartTypeId = '874F5460-71F9-FECC-E894-E7E858D9713E'
WHERE tp_WebPartTypeId IN('BAF5274E-A800-8DC3-96D0-0003D9405663','2242CCE6-491A-657A-C8EE-B10A2A993EDA') AND
(tp_DisplayName <> 'كافة المستندات' OR tp_DisplayName <> 'All Documents')


استمتع بترقية مريحة :)