2016-11-05 8 views
0

のタイプのプロキシが見つかりませんページライブラリに公開ページを作成しようとしているときに説明できないエラーが発生しました。追加情報:IDが "{55927360 -235b-4ace-9dcf-c574d6e517ea}」。CS20でSP2010の公開ページを作成する(15)IDが

CSOMはSP2013以降でのみ安全ですか? CSOMのSDKの別のバージョンが意図されているSharePointの異なるバージョンを標的化するため

private static void BuildPage(ClientContext clientContext, PublishingWeb pWeb, ListItem pageLayout, List pages, string aiName) 
{ 
    // Create a publishing page 
    PublishingPageInformation publishingPageInfo = new PublishingPageInformation(); 
    publishingPageInfo.Name = aiName; 
    publishingPageInfo.PageLayoutListItem = pageLayout; 
    PublishingPage publishingPage = pWeb.AddPublishingPage(publishingPageInfo); 
    if (pages.ForceCheckout || pages.EnableVersioning) 
    { 
     publishingPage.ListItem.File.CheckIn(string.Empty, CheckinType.MajorCheckIn); 
     publishingPage.ListItem.File.Publish(string.Empty); 
     if (pages.EnableModeration) 
     { 
      publishingPage.ListItem.File.Approve(string.Empty); 
     } 
    } 
    clientContext.ExecuteQuery(); 
    //Here the error is Additional information: Cannot find proxy for type with id "{55927360-235b-4ace-9dcf-c574d6e517ea}". 
} 

答えて

0

、SharePoint 2010の場合には)SharePoint Foundation 2010 Client Object Model Redistributableあります。 SharePoint 2010のCSOMのAPIを経由して発行ページを作成する方法

Microsoft.SharePoint.Publishing.PublishingWeb classは、SharePointの2010年にCSOMのAPIを介して公開されていないので、あなたはこのエラーを取得している


例は、どのように示してい公開ページを作成してください(PublishingWeb.AddPublishingPage methodに似ています)。

using System; 
using System.Text; 
using Microsoft.SharePoint.Client; 

namespace SharePoint2010.CSOM.Extensions 
{ 
    public static class PublishingPage 
    { 
     public static void Create(List pagesList,ListItem pageLayout, string pageName, string pageContent) 
     { 
      var ctx = (ClientContext) pagesList.Context; 
      const string publishingPageTemplate = 
       "<%@ Page Inherits=\"Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c\" %> <%@ Reference VirtualPath=\"~TemplatePageUrl\" %> <%@ Reference VirtualPath=\"~masterurl/custom.master\" %>"; 
      var fileInfo = new FileCreationInformation 
      { 
       Url = pageName, 
       Content = Encoding.UTF8.GetBytes(publishingPageTemplate), 
       Overwrite = true 
      }; 
      var pageFile = pagesList.RootFolder.Files.Add(fileInfo); 
      var pageItem = pageFile.ListItemAllFields; 

      if (!ctx.Site.IsPropertyAvailable("ServerRelativeUrl")) 
      { 
       ctx.Load(ctx.Site); 
       ctx.ExecuteQuery(); 
      } 

      pageItem["PublishingPageLayout"] = string.Format("{0}, {1}", pageLayout["FileRef"], pageLayout["Title"]); 
      pageItem["PublishingPageContent"] = pageContent; 
      pageItem.Update(); 
      ctx.ExecuteQuery(); 
     } 


     public static ListItem GetPageLayout(ClientContext ctx, string name) 
     { 
      var masterPagesList = ctx.Site.GetCatalog((int) ListTemplateType.MasterPageCatalog); 
      var items = masterPagesList.GetItems(CreatePageLayoutByNameQuery(name)); 
      ctx.Load(items); 
      ctx.ExecuteQuery(); 
      return items.Count == 1 ? items[0] : null; 
     } 

     private static CamlQuery CreatePageLayoutByNameQuery(string name) 
     { 
      var qry = new CamlQuery(); 
      qry.ViewXml = "<View>" + 
           "<Query>" + 
            "<Where>" + 
             "<Eq><FieldRef Name='FileLeafRef'/><Value Type='File'>{0}</Value></Eq>" + 
            "</Where>" + 
           "</Query>" + 
          "</View>"; 
      qry.ViewXml = String.Format(qry.ViewXml,name); 
      return qry; 
     } 
    } 
} 

使用

using (var ctx = GetContext(webUri.ToString(), userName, password)) 
{ 
    var pagesList = ctx.Web.Lists.GetByTitle("Pages"); 
    var pageLayout = PublishingPage.GetPageLayout(ctx, "ArticleLeft.aspx"); 
    PublishingPage.Create(pagesList, pageLayout,"Welcome.aspx","<h1>Welcome</h1>"); 
} 
+0

ありがとうございました。私はあなたのコードを使用しようとします – user14268

関連する問題