Проблема открытия контекста SPSite из SPItemEventProperties - PullRequest
0 голосов
/ 15 июня 2010

В следующем коде

// class overrides SPItemEventreceiver    
public override void ItemAdding(SPItemEventProperties properties)
{    
  using (var site = new SPSite(properties.SiteId)) //SiteId is GUID <<corrected
  {
      ...
  }
}

Выдается следующее исключение:

System.IO.FileNotFoundException: The Web application at http://URL could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

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

1 Ответ

3 голосов
/ 16 июня 2010

SiteId не должен быть целым числом - ctor SPSite принимает только URL или Guids. Учитывая, что это GUID, я не вижу, как AAM играет здесь роль. Альтернативным подходом может быть использование:

properties.OpenWeb().Site

Кроме того, поскольку вы находитесь в синхронном обработчике событий, у вас должен быть доступ к SPContext.Current.Site (если только вы не перехватываете события в библиотеке документов - давняя ошибка sharepoint означает, что в событиях синхронизации для doclibs отсутствует контекст - хреново)

-Oisin

...