我正在尝试调试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);
}
}
如果我在事件接收器中放置断点,它将不会停止。
答案 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要求您调试代码。
没有必要使用“附加到进程”,但这是另一种可能的调试方法。