不使用sharepoint开发环境或服务引用的Sharepoint身份验证?

时间:2014-06-13 23:55:11

标签: rest sharepoint sharepoint-2013

我正在尝试使用.net程序访问本地SharePoint站点,但遇到了困难。

我不想使用SharePoint开发环境(可能有许多开发人员在这方面工作,这只是安装的一件事)。

我还想使其可配置,以便我可以更改网站和列表名称而无需重新编译。我不认为我可以使用服务参考来做到这一点。如果我可以,怎么样?

我也不希望用户输入sharepoint验证信息,我可以将sharepoint登录信息存储在.config文件中。

我相信我可以使用REST做到这一点,但无法弄清楚如何在不使用Sharepoint开发环境的情况下创建AccessToken。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到的主要问题是不能理解您可以在request.Credentials属性中放置其他类型的凭据。这是我创建的代码:

    public bool CopyFileToSharePoint(string fileName, Stream fileStream)
    {
        var data = new byte[fileStream.Length];
        fileStream.Read(data, 0, (int) fileStream.Length);
        fileStream.Close();

        var sharePointPath =
            SharePointWebSiteUrl + "/_api/web/lists/getByTitle('" + SharePointListName + "')" +
            "/RootFolder/Files/add(url='" + fileName + "',overwrite='true')";

        var request = (HttpWebRequest) WebRequest.Create(sharePointPath);
        request.Credentials = new NetworkCredential(SharePointUserName, SharePointPassword, SharePointLoginDomain);
        request.Method = "POST";
        request.Accept = "application/atom+xml";
        request.Headers["X-RequestDigest"] = GetFormDigest(SharePointWebSiteUrl);
        request.ContentType = "application/txt";
        request.ContentLength = data.Length;
        request.GetRequestStream().Write(data, 0, data.Length);

        var response = (HttpWebResponse) request.GetResponse();
        return response.StatusCode == HttpStatusCode.OK;
    }

我确定它并不完美,但确实有效。