نشر المحتوى وواجهة برمجة تطبيقات الترحيل لا تستورد لا يوجد خطأ تم طرحه

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

سؤال

ما يلي http://blogs.technet.com/b/stefan_gossner/archive/2007/08/30/deep-dive-into-the-sharepoint-content-deployment-and-migration-api-part-4.aspx يوفر رمز فولوينف لاستيراد وتصدير عنصر باستخدام واجهة برمجة تطبيقات نشر المحتوى والترحيل.

using System;     
using System.Collections.Generic;     
using System.Text;     
using Microsoft.SharePoint;     
using Microsoft.SharePoint.Deployment;     
namespace WssOMtest     
{     
   class Program     
   {
       static void Main(string[] args)     
       {     
           // export     
           SPSite site = new SPSite("http://localhost:4000");     
           SPWeb web = site.OpenWeb("/");     
           SPList list = web.Lists["MyList"];     
           SPListItem listItem = list.Items[0];     
           SPExportObject exportObject = new SPExportObject();     
           exportObject.Id = listItem.UniqueId;

           exportObject.Type = SPDeploymentObjectType.ListItem;     
           SPExportSettings exportSettings = new SPExportSettings();     
           exportSettings.ExportObjects.Add(exportObject);     
           exportSettings.FileLocation = @"c:\export\CopyListItem";

           exportSettings.FileCompression = false;

           exportSettings.SiteUrl = "http://localhost:4000";

           SPExport export = new SPExport(exportSettings);

           export.Run();

           web.Dispose();

           // import

           SPImportSettings importSettings = new SPImportSettings();

           importSettings.SiteUrl = "http://localhost:4000";

           importSettings.FileLocation = @"c:\export\CopyListItem";

           importSettings.FileCompression = false;

           importSettings.RetainObjectIdentity = false;

           SPImport import = new SPImport(importSettings);

           EventHandler<SPDeploymentEventArgs> startedEventHandler = new EventHandler<SPDeploymentEventArgs>(OnStarted);

           import.Started += startedEventHandler;

           import.Run();

           // cleanup

           site.Dispose();

       }

       // event handler to assign a new parent to the orphaned image in the package

       static void OnStarted(object sender, SPDeploymentEventArgs args)

       {

           SPSite site = new SPSite("http://localhost:4000");

           SPWeb web = site.OpenWeb("/PressReleases");

           SPList list = web.Lists["TargetList"];

           SPImportObjectCollection rootObjects = args.RootObjects;

           foreach (SPImportObject io in rootObjects)

           {

               io.TargetParentUrl = list.RootFolder.ServerRelativeUrl;

           }

           web.Dispose();

           site.Dispose();

       }     
   }     
}

طيب عظيم.لقد غيرت سيتينغس لذلك يستخدم أسماء قائمتي وموقعي ورل.التصدير يعمل بشكل رائع.الاستيراد لا يعمل.أنا تنفيذ التعليمات البرمجية على وثيقة ليب.لا يتم طرح أي أخطاء ولكن عنصر المحتوى لا يتغير القائمة.

ما يمكن أن يحدث خطأ?حتى إذا قمت بحذف العنصر الأصلي بعد التصدير ، فقم بالاستيراد دون تغيير القائمة الأصلية ، فلن يحدث شيء.

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

المحلول

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

عذرا ، لم يكن لدي الكثير من الوقت لتحسين التعليمات البرمجية الخاصة بك أكثر على سبيل المثال.التخلص بشكل صحيح من الكائنات سبويب و سبسيت.آمل أن تفعل ذلك بنفسك.

يتم لصق الرمز المحدث أدناه:

class Program
    {
        static void Main(string[] args)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                // implementation details omitted
                SPSite site = new SPSite("http://mylocaldev/");
                SPWeb web = site.OpenWeb("/");
                SPList list = web.Lists["ParentPic"];
                SPListItem listItem = list.Items[0];

                try
                {
                    //delete the old files
                    DirectoryInfo dir = new DirectoryInfo(@"c:\export\CopyListItem");
                    foreach (System.IO.FileInfo file in dir.GetFiles()) file.Delete();                    

                    // export                        
                    SPExportObject exportObject = new SPExportObject();
                    exportObject.Id = listItem.UniqueId;

                    exportObject.Type = SPDeploymentObjectType.ListItem;
                    SPExportSettings exportSettings = new SPExportSettings();
                    exportSettings.ExportObjects.Add(exportObject);
                    exportSettings.FileLocation = @"c:\export\CopyListItem";

                    exportSettings.FileCompression = false;

                    //exportSettings.BaseFileName = "exportfile.cmp";

                    exportSettings.SiteUrl = "http://mylocaldev/";

                    SPExport export = new SPExport(exportSettings);

                    export.Run();

                }
                catch (Exception ex)
                {

                }
                finally { web.Dispose();}


                // import

                SPImportSettings importSettings = new SPImportSettings();

                importSettings.SiteUrl = "http://mylocaldev/";

                importSettings.FileLocation = @"c:\export\CopyListItem";

                importSettings.FileCompression = false;

                //importSettings.BaseFileName = "exportfile.cmp";

                importSettings.RetainObjectIdentity = false;

                SPImport import = new SPImport(importSettings);

                EventHandler<SPDeploymentEventArgs> startedEventHandler = new EventHandler<SPDeploymentEventArgs>(OnStarted);

                import.Started += startedEventHandler;

                import.Run();

                // cleanup

                site.Dispose();

            });

        }

        // event handler to assign a new parent to the orphaned image in the package

        static void OnStarted(object sender, SPDeploymentEventArgs args)
        {

            SPSite site = new SPSite("http://mylocaldev/");

            SPWeb web = site.OpenWeb("/");

            SPList list = web.Lists["ChildPic"];

            SPImportObjectCollection rootObjects = args.RootObjects;

            foreach (SPImportObject io in rootObjects)
            {

                io.TargetParentUrl = list.RootFolder.ServerRelativeUrl;

            }

            web.Dispose();

            site.Dispose();

        }
    }

نصائح أخرى

لحسن الحظ، قبل بعض الأيام، كنت أعمل على نوع من المهام مماثلة.

لقد حاولت مع الكود المعطى الخاص بك.وعملها تقريبا.

لكني أوافق على Falak الذي يجب عليك كتابة التعليمات البرمجية مع محاولة / صيد مناسب ومع نمط التشفير القياسي SharePoint.

هنا، وجدت أنه بمجرد تشغيل رمزك تماما، في المرة الثانية، يجب عليك الحصول على خطأ، لأنك لا تنظف مجلد موقع ملف الملفات وهو: " c: \ Export \copylistitem ".

قد يكون هذا يساعدك.

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