从SPItemEventProperties打开上下文SPSite时遇到问题

时间:2010-06-15 18:10:48

标签: sharepoint wss-3.0

在以下代码中,

// 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 个答案:

答案 0 :(得分:3)

SiteId不应该是整数 - SPSite ctor只接受URL或Guids。鉴于它是一个GUID,我不知道AAM如何在这里发挥作用。另一种方法可能是使用:

properties.OpenWeb().Site

此外,由于您处于同步事件处理程序中,因此您应该有权访问SPContext.Current.Site(除非您在文档库中捕获事件 - 长期存在的共享点错误意味着doclibs的同步事件中没有上下文 - 糟糕的)

-Oisin