У меня есть одна настраиваемая сущность («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);
}
Любая помощь / предложение будут очень полезны.Спасибо.