Использование Sharepoint GridViews на сервере без установленного SharePoint

У меня есть веб-приложение, которое должно извлекать данные из списка Sharepoint и отображать их с тем же "внешним видом", что и в списке sharepoint, но на другом веб-сайте.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spgridview.aspx

Веб-приложение не установлено на сервере с основанием SharePoint. DLL-библиотеки sharepoint естественным образом отсутствовали, но я скопировал их с сервера, на котором установлен SP, и добавил их в свой проект. Теперь страница компилируется, но выдает исключение, которое появляется всякий раз, когда я вставляю элемент SPGridView ASP.

Исключение: System.ArgumentException: требуется информация об абсолютном пути.

Трассировки стека:

[ArgumentException: Absolute path information is required.]
   System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) +12658807
   System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList) +112
   Microsoft.SharePoint.Utilities.SPUtility.ComputeFileHash(String filePath) +470
   Microsoft.SharePoint.Utilities.SPUtility.MakeBrowserCacheSafeLayoutsUrl(String name, Boolean localizable) +487
   Microsoft.SharePoint.WebControls.ScriptLinkInfo.ToScriptUrl(Page page) +488
   Microsoft.SharePoint.WebControls.ScriptLinkInfo.ToScriptBlock(Page page) +24
   Microsoft.SharePoint.WebControls.ScriptLink.RegisterForControl(Control ctrl, Page page, String name, Boolean localizable, Boolean defer, Boolean loadAfterUI, String language) +1195
   Microsoft.SharePoint.WebControls.ScriptLink.Register(Page page, String name, Boolean localizable, Boolean defer, String language, String uiVersion) +38
   Microsoft.SharePoint.WebControls.ScriptLink.Register(String uiVersion, Page page, String name, Boolean localizable, Boolean defer) +59
   Microsoft.SharePoint.WebControls.ScriptLink.Register(Page page, String name, Boolean localizable) +30
   Microsoft.SharePoint.WebControls.SPGridView.OnLoad(EventArgs args) +86
   System.Web.UI.Control.LoadRecursive() +71
   System.Web.UI.Control.LoadRecursive() +190
   System.Web.UI.Control.LoadRecursive() +190
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064

Если я удалю элемент SPGridView ASP, страница запустится. Кто-нибудь знает, как заставить это работать? Я знаю, что могу использовать клиентскую объектную модель, но AFAIK не предоставляет ничего для отображения списков с тем же внешним видом и функциональностью, что и в Sharepoint.

1 ответ

Самый простой способ фиктивного размещения контента SharePoint на веб-странице (т. е. показ контента SharePoint на странице, размещенной на сервере, отличном от SharePoint) — это классический и надежный старый IFrame. Вот шаги:

  1. Создайте представление для исходного списка, исключающее такие вещи, как навигация, верхние и нижние колонтитулы и тому подобное. Вы хотите, чтобы он был как можно ближе к данным списка.
  2. На целевой странице вставьте IFrame и установите источник указанного IFrame так, чтобы он указывал на страницу просмотра, которую вы настроили в пункте 1 выше.
  3. Убедитесь, что такие вещи, как междоменные сценарии и т. д., включены в белый список для исходного сайта на целевом сайте. SharePoint использует МНОГО JavaScript, особенно в наши дни, поэтому, если ваш целевой сайт блокирует междоменные сценарии, это может испортить вам день.

Это должно сработать.

Другие вопросы по тегам