Sharepoint 2010 无法在客户端对象模型中获取文档库url

Sharepoint 2010 无法在客户端对象模型中获取文档库url,sharepoint-2010,sharepoint-clientobject,Sharepoint 2010,Sharepoint Clientobject,我正在使用Sharepoint 2010 已在Sharepoint门户中创建文档库 我理解建议库url不包含任何空格。因此,最初它被创建为PPC公司。然后,为了使库名称更便于用户使用,将通过库设置将其重命名为SC文档。url没有改变,它仍然是PPM公司 我发现在我的客户机对象模型中,我必须使用带有空格的新标题“PP文档”访问库。但是,我需要url,以便我可以将超链接放置到我已保存到库中的文档。我该怎么做?我希望这是Sharepoint.Client.List对象的属性,但在我创建它时似乎没有设置

我正在使用Sharepoint 2010

已在Sharepoint门户中创建文档库

我理解建议库url不包含任何空格。因此,最初它被创建为PPC公司。然后,为了使库名称更便于用户使用,将通过库设置将其重命名为SC文档。url没有改变,它仍然是PPM公司

我发现在我的客户机对象模型中,我必须使用带有空格的新标题“PP文档”访问库。但是,我需要url,以便我可以将超链接放置到我已保存到库中的文档。我该怎么做?我希望这是Sharepoint.Client.List对象的属性,但在我创建它时似乎没有设置这样的属性

这是将文档保存到“PP公司”的代码。“PP公司”的值可在此.DocumentLibrary中找到

    public void Save(byte[] file, string url)
    {
        using (var context = newClientContext(this.SharepointServer))
        {
            context.Credentials = newNetworkCredential(this.UserName, this.Password, this.Domain);
            var list = context.Web.Lists.GetByTitle(this.DocumentLibrary);
            var fileCreationInformation = newFileCreationInformation
                                              {
                                                  Content = file,
                                                  Overwrite = true,
                                                  Url = url
                                              };
            var uploadFile = list.RootFolder.Files.Add(fileCreationInformation);
            uploadFile.ListItemAllFields.Update();
            context.ExecuteQuery();
            if (this.Metadata.Count > 0)
            {
                this.SaveMetadata(uploadFile, context);
            }
        }
    }

    private void SaveMetadata(File uploadFile, ClientContext context)
    {
        var item = uploadFile.ListItemAllFields;
        foreach (var row inthis.Metadata)
        {
            item[row.Key] = row.Value;
        }

        item.Update();
        context.ExecuteQuery();
    }
所以这个代码是有效的。但我不能使用“PP公司”来获取执行后所需的超链接的URL

我发现context.Url只是根文件夹Url


未设置list.RootFolder.ServerRelativeUrl。

在使用SharePoint时使用客户端上下文时,需要在读取对象及其属性之前使用context.Load方法


在您的情况下,添加
context.Load(list.RootFolder)就在ExecuteQuery方法调用之前。然后列表对象和RootFolder属性将从服务器发送,并可在客户端访问。

我已复制并粘贴了您的代码,并添加了我的答案中的行,它成功了。也许还有另一个问题。