Почему SharePoint меняет URL-адреса с других веб-приложений на текущее веб-приложение и как этого избежать - PullRequest
0 голосов
/ 12 июля 2009

Я использую объектную модель sharepoint для разработки веб-части, которая получает элементы списка из списка в другом веб-приложении, я сделал это

protected override void CreateChildControls()
{
    SPSite site = new SPSite("http://myhost/");
    ListViewByQuery lview = new ListViewByQuery();
    SPWeb web = site.OpenWeb();
    lview.List = web.Lists["Tasks"];
    lview.Query= new SPQuery(lview.List.Views["All Tasks"]);    
    this.Controls.Add(lview);
}

когда я использую свою веб-часть в веб-приложении, отличном от "http://myhost/",", я собираюсь использовать его в "http://mysite",", при этом все URL-адреса заменяются, вместо "myhost" на "mysite" зачем shrepoint делать это и как ходить вокруг него?

Ответы [ 3 ]

2 голосов
/ 12 июля 2009

Я протестировал ваш код в другом веб-приложении на том же сервере и могу воспроизвести описанную вами проблему. Это происходит потому, что SharePoint отображает относительные URL-адреса страницы вместо абсолютных. Следовательно, он неправильно ссылается на текущее веб-приложение.

К сожалению, то, что на самом деле делает SharePoint с этим рендером, запутано согласно Reflector. Похоже, что Microsoft не намеревалась использовать этот элемент управления против другого веб-приложения. В этом случае мой метод решения проблемы - использовать jQuery ( примеры на SO , End User SharePoint ) или HTTP-модуль для исправления URL.

(Обратите внимание, что у обоих есть проблемы с поддержкой). Microsoft может изменить способ вывода этого элемента управления в будущем пакете обновления или выпуске, который нарушит ваш пользовательский код.)

Редактировать: Исправлено в соответствии с комментарием Кит.

Редактировать 2: Переписать.

1 голос
/ 12 июля 2009

Ознакомьтесь с этой статьей ( ссылка ) о веб-части Content Monster. Это может быть что-то, что решает вашу проблему или, по крайней мере, дает вам представление.

0 голосов
/ 12 июля 2009

Как писал Алекс, вы не можете использовать объектную модель SharePoint для получения данных из другого семейства сайтов, отличного от того, в котором вы находитесь в данный момент. Я бы предложил использовать встроенные веб-сервисы (точнее, метод GetListItems файла Lists.asmx) для извлечения данных.

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