Sharepoint:价值不在预期范围内

时间:2015-12-09 10:51:15

标签: sharepoint csom

我正在尝试在sharepoint 2013中导入网络及其子网站的徽标。

当我尝试为子网站加载文件时,会发生异常。

  

价值不在预期范围内

这是我的代码

if (siteLogo != null)
{
   File = web.GetFileByServerRelativeUrl(siteLogo);
   Data = File.OpenBinaryStream();
   customContext.Context.Load(File);
   customContext.Context.ExecuteQuery();
}

第一次它工作正常。但是当它为子网站加载时会产生异常。

我尝试了很多来解决这个问题,但无法找到解决方案。请帮忙。

这是完整的文件

public Branding(SharePointClientContext customContext, string siteLogo, string alternateCss, ListItemCollection ltItemCollection, Microsoft.SharePoint.Client.Web web)
    {
        if (ltItemCollection != null)
        {
            ListItem item = ltItemCollection.Where(a => a.DisplayName == "Current").FirstOrDefault();
            if (item.FieldValuesAsText != null && item.FieldValuesAsText.FieldValues["ThemeUrl"] != null && item.FieldValuesAsText.FieldValues["ThemeUrl"] != "")
            {
                string themeUrl = item.FieldValuesAsText.FieldValues["ThemeUrl"].Split(',')[1];
                string themeFileName = themeUrl.Substring(themeUrl.LastIndexOf('/') + 1).ToLower();
                ListItem selectedTheme = ltItemCollection.Where(a =>
                                                        a.FieldValuesAsText.FieldValues["ThemeUrl"].Split(',')[1].Substring(a.FieldValuesAsText.FieldValues["ThemeUrl"].Split(',')[1].LastIndexOf('/') + 1) == themeFileName
                                                        && a.DisplayName != "Current").FirstOrDefault();
                this.Theme = selectedTheme.DisplayName;

            }
        }

        if (siteLogo != null)
        {
            File = web.GetFileByServerRelativeUrl(siteLogo);
            Data = File.OpenBinaryStream();
            customContext.Context.Load(File);
            customContext.Context.ExecuteQuery();
            File = null;
        }

        if (alternateCss != null && alternateCss != "")
        {
            CssFile = web.GetFileByServerRelativeUrl(web.SiteLogoUrl);
            CssData = CssFile.OpenBinaryStream();
            web.Context.Load(CssFile);
            web.Context.ExecuteQuery();
            CssFile = null;
        }
    }

以下列方式调用此方法。

SharePointConstants.branding.Add(new Branding(customContext, siteLogo, AlternateCss, ltItemCollection, web));

0 个答案:

没有答案