Неверный идентификатор сайта контекста SPItemEventReceiver/webUrl

StackOverflow https://stackoverflow.com/questions/1990796

Вопрос

Я создал приемник событий SharePoint, который срабатывает при обновлении элемента.Получателю необходим доступ к AfterProperties и ListItem.

При запуске приемника событий из веб-приложения SharePoint с использованием IP-адреса (http://10.0.4.50/sites/), он выбрасывает Исключение FileNotFoundException, при доступе к SiteID и webUrl в SPItemEventProperties.Веб-приложение по адресу http://10.0.4.50/sites/companyName не удалось быть найденным.Убедитесь, что вы правильно ввели URL-адрес.

При запуске приемника событий с использованием имени хоста, указанного при настройке семейства сайтов http://computerhostname/sites/companyName.Это работает нормально, никаких исключений не генерируется.

//Combine Both AfterProperties And ListItem
var ListProperties = new List<KeyValuePair<string, object>>();
ListProperties.AddRange(properties.AfterProperties.ToKeyValue());
ListProperties.AddRange(properties.ListItem.ToKeyValue(p => !p.Sealed));
var AvaliableProperties = ListProperties.Distinct(new KeyValueComparer<object>());
Это было полезно?

Решение

Это не обязательно проблема SharePoint, но, скорее всего, связано с тем, как IIS настроен на хосте.Конкретный сайт может быть "привязан" к IP-адресу и имени хоста, и если имя хоста отсутствует в HTTP GET, отправляемом браузером, то IIS вернет 404 NOT FOUND.

Вы можете проверить это с помощью браузера, чтобы узнать, можете ли вы получить доступ к сайту по IP-адресу.

При необходимости вы можете добавить дополнительные привязки, но для каждого IP-адреса может быть только одна привязка "по умолчанию", поэтому на (в вашем случае) 10.0.4.50 может присутствовать только один сайт.

Возможным выходом из ситуации, когда присутствует несколько сайтов, но вы не можете использовать имя хоста, может быть добавление привязки к порту, отличному от порта 80 для этого IP, чтобы ваш URL стал чем-то вроде http://10.0.4.50:8080/sites/companyName.

Другие советы

Это проблема не только IIS, но и связанная с Sharepoint.Большая часть ссылок в SharePoint выполняется с использованием URL в качестве отправной точки (просто посмотрите на конструктор SPSite).Затем URL-адрес сравнивается с известными URL-адресами в базе данных конфигурации SharePoint.(и ofr-файлы и т.д. в базе данных контента сайта).

SharePoint использует систему под названием Альтернативные сопоставления доступа для назначения различных URL-адресов "Зонам" веб-приложения (по умолчанию, интрасеть, Интернет, ...пользовательское определение).Если он не найдет "точный" URL-адрес, внутренний материал завершится неудачей (и особенно поиск очень "чувствителен к URL").

Затем в игру вступает роль IIS:Поскольку у IIS, вероятно, нет другого сайта, работающего на порту 80, и без определенного hostheader (поэтому по умолчанию используется machinename), или с установленным для hostheader именем компьютера, IIS примет запрос, и поскольку SharePoint привязан к этому веб-приложению, SharePoint попытается обработать его, ищет URL-адрес, Sharepoint не находит URL-адрес и thne "прерывается".

Значение no hostheader появляется, когда вы оставляете поле hostheader пустым при создании нового веб-приложения в SharePoint.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top