为什么当我使用此代码时我的共享点工作流程总是停止?
我需要在列表中找到一个用户来设置分配给任务属性,这些信息都在列表中。 所以我使用这个方法:
public static SPUser GetSPUser(SPListItem item, string key){
SPFieldUser field = item.Fields[key] as SPFieldUser;
if (field != null)
{
SPFieldUserValue fieldValue = field.GetFieldValue(item[key].ToString()) as SPFieldUserValue;
if (fieldValue != null)
{
return fieldValue.User;
}
}
return null;
}
问题是,当我使用这个方法或这部分代码时,我的工作流程停止了,什么也没说。 这是我使用它时的代码示例:
using (SPSite site = new SPSite(adress_of_my_site))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Acteurs du projet"];
SPView view = cobj_ListeDesActeursDuProjet.DefaultView;
SPListItemCollection itemcollection = list.GetItems(view);
foreach (SPListItem item in itemcollection)
{
SPUser lobj_acteur = Utilities.GetSPUser(item,"acteur");
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
}
}
}
如果我评论 foreach 的内容,我的工作流程也会继续...
如果有人有想法,那就太酷了。
问候, Loïc
编辑:代码中的问题
I need to find an user in a list to set the assignedto task property, these informations are in a list. So i use this method :
public static SPUser GetSPUser(SPListItem item, string key){
SPFieldUser field = item.Fields[key] as SPFieldUser;
if (field != null)
{
SPFieldUserValue fieldValue = field.GetFieldValue(item[key].ToString()) as SPFieldUserValue;
if (fieldValue != null)
{
return fieldValue.User;
}
}
return null;
}
The problem is that when i use this method or this part of code, my workflow stop without saying anything. Here an exemple of code when i use it :
using (SPSite site = new SPSite(adress_of_my_site))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Acteurs du projet"];
SPView view = cobj_ListeDesActeursDuProjet.DefaultView;
SPListItemCollection itemcollection = list.GetItems(view);
foreach (SPListItem item in itemcollection)
{
SPUser lobj_acteur = Utilities.GetSPUser(item,"acteur");
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
}
}
}
If i comment the content of my foreach my workflow continue as well...
If anybody have an idea it will be cool.
Regards,
Loïc
edit: problem in the code
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下是一些可能有帮助的调试技巧:
ULS 日志
任何异常都应在此处详细报告。
对所有 .NET 代码启用调试
这将导致每当 SharePoint 以及您的代码中发生异常时调试器就会中断。 缺点是调试器会因“正常”异常而中断,而不会导致任何副作用。 所以不要被误导!
要启用:转到“调试”、“异常”并勾选“公共语言运行时异常”。 另请转到“工具”、“选项”、“调试”并取消选中“仅启用我的代码”。 然后附加到 w3wp.exe。
注释代码
您还可以注释掉所有代码。 如果工作流程步骤失败,您就知道其他地方存在问题。 如果工作流程步骤通过,则开始取消注释代码,直到失败 - 然后您就知道在哪里查找。
Here are some debugging tips that might help:
ULS logs
Any exceptions should be reported here in some detail.
Enable debugging for all .NET code
This will cause the debugger to break whenever an exception occurs in SharePoint as well as your code. The downside is that the debugger will break on 'normal' exceptions that cause no side effects. So don't be misled!
To enable: Go to Debug, Exceptions and tick Common Language Runtime Exceptions. Also go to Tools, Options, Debugging and untick Enable Just My Code. Then attach to w3wp.exe.
Commenting code
You could also comment out all of your code. If the workflow step fails, you know there is a problem elsewhere. If the workflow step passes, then start uncommenting code until it fails - then you know where to look.
我尝试在上面对此进行评论,但它的格式不太好,所以就在这里。
这可能没问题,但这对我来说看起来很可疑:
我认为它会是这样的:
I tried commenting this above but it didn't format nicely so here it is.
It probably is fine, but this looks fishy to me:
I would think it would be something like: