SharePoint 2010事件处理程序

时间:2011-11-11 11:39:49

标签: sharepoint event-receiver

我正在尝试调试Sharepoint列表的事件接收器。 这是我正在做的代码:

//Add an event receiver to the list
list.EventReceivers.Add(SPEventReceiverType.ItemAdded, "DatasEvent, Version = 1.0.0.0, Culture = neutral, PublicKeyToken =  6f4db1e1fedbed57", "DatasEvent.DatasEventReceiver");

public override void ItemAdded(SPItemEventProperties properties)
{
    try
    {
        int itemIdSql;
        SPListItem item = properties.ListItem;
        ...
    }
    catch (SqlException ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

如果我在事件接收器中放置断点,它将不会停止。

5 个答案:

答案 0 :(得分:2)

转到Visual Studio Debug - >附加过程 - >附加列表中所有可用的w3wp.exe。现在尝试在Web浏览器中激活该功能。你的断点应该加载并命中。

答案 1 :(得分:1)

我个人更喜欢将System.diagnostic.debug.WriteLn()消息添加到事件接收器代码中,并使用服务器上的DebugView查看它们。每次都附加到工作进程很烦人。

答案 2 :(得分:0)

我会尝试:

Debugger.Launch();

仅在开发环境中,否则它将尝试针对每个请求进行调试。

我会在添加事件接收器之前添加它。

答案 3 :(得分:0)

首先确保最新的程序集版本到达GAC。最简单的方法是使用项目上下文菜单中的“Deploy”选项,或者只需点击F5。

然后,请告知我们此代码的分配位置

//将事件接收器添加到列表中 list.EventReceivers.Add(SPEventReceiverType.ItemAdded,“DatasEvent,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 6f4db1e1fedbed57”,“DatasEvent.DatasEventReceiver”);

如果它被放置在功能接收器中,那么在尝试连接到与目标Web应用程序对应的应用程序池对应的w3wp.exe之前,请确保它已激活。

答案 4 :(得分:0)

您应该在两个web.config文件中启用sharepoint的调试。 您应该使用Debugger.Launch()来停止运行时。 例如。部署和激活事件触发后(在EventReceiver的代码中有一个Debugger.Launch()命令),VS要求您调试代码。

没有必要使用“附加到进程”,但这是另一种可能的调试方法。

this links helped me a lot