Как скопировать файл из одной библиотеки документов в другую библиотеку документов в sharepoint, используя пользовательский рабочий процесс в CRM 365 - PullRequest
0 голосов
/ 08 октября 2018

У меня есть одна настраиваемая сущность («ABC»), в которой выполняется поиск другой настраиваемой сущности («PQR») в CRM 365. Я хотел скопировать файл из «PQR» в «ABC».Места хранения файлов для «PQR» и «ABC» хранятся в разных местах библиотеки документов в SharePoint.

Я пытаюсь скопировать файл из одной библиотеки документов («PQR») в другую библиотеку документов («ABC») в SharePoint, используя настраиваемый рабочий процесс в CRM 365.

Вот что я пытался сделать такдалеко: я пытался получить содержимое файла из библиотеки "PQR", используя приведенный ниже код, но получил ошибку сериализации в методе "GetFiles".

Guid siteId = new Guid("XXXXXXXXXXXXXX");
string sharepointEntityName = "somesharepointentityname";
ColumnSet sharepointEntitycolumnset = new ColumnSet("relativeurl","name");
FilterExpression sharepointEntityfilter = new FilterExpression();
sharepointEntityfilter.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, "Active"));
sharepointEntityfilter.AddCondition(new ConditionExpression("regardingobjectid", ConditionOperator.Equal, template.Id));
var site = (SharePointSite)service.Retrieve(SharePointSite.EntityLogicalName, siteId, new ColumnSet("sharepointsiteid", "absoluteurl"));
var sharepointList = CrmHelper.FetchMultipleRecords(sharepointEntityName, sharepointEntityfilter, sharepointEntitycolumnset, service);
tracingService.Trace("get sharepointList.");
if (sharepointList == null)
    return;
var privateService = serviceFactory.CreateOrganizationService(null);
var docLocation = new DocumentLocationHelper(privateService, spService);
foreach (var sharepoint in sharepointList)
{
    tracingService.Trace("get lists."+ sharepointList.Count);
    string templateLibraryName = "SomeTemplate";
    string templateFolderName = sharepoint.Attributes["relativeurl"].ToString();
    tracingService.Trace("relativeurl" + templateFolderName);

    string name = sharepoint.Attributes["name"].ToString();
    tracingService.Trace("Name," + name);
    var templatefile = spConn.GetRelativeFileFolderName(spsiteurl, templateLibrary);
    tracingService.Trace("templatefile" + templatefile);
    var templateFiles = docLocation.GetFiles(site, templateLibraryName, templateFolderName);
}

public string GetFiles(SharePointSite site, string libraryName, string folderName)
{
    _spService.FetchFiles(site.AbsoluteURL, libraryName, folderName);
    return "someString";
}



public void FetchFiles(string siteUrl, string libraryName, string folderName)
{
    if (siteUrl != _siteUrl)
    {
        _siteUrl = siteUrl;
        Uri spSite = new Uri(siteUrl);
        _spo = SpoAuthUtility.CreateSP(spSite, _username, WebUtility.HtmlEncode(_password), false);
    }

    string odataQuery = "_api/web/GetFolderByServerRelativeUrl";
    string digest = _spo.GetRequestDigest();

    Uri url = new Uri(String.Format("{0}/{1}('{2}')/Files", _spo.SiteUrl, odataQuery, libraryName + "/" + folderName));
    var webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    webRequest.Headers.Add("X-RequestDigest", digest);

    // Send a json odata request to SPO rest services to fetch all list items for the list.
    byte[] result = HttpHelper.SendODataJsonRequest(
      url,
      "GET",
      null,
      webRequest,
      _spo
    );

    string response = Encoding.UTF8.GetString(result, 0, result.Length);
}

Любая помощь / предложение будут очень полезны.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...