从Visual Studio 2010测试SharePoint列表工作流



我试图在Visual Studio 2010中为SharePoint 2010创建一个自定义工作流,并遇到了一个问题。我已经知道如何将工作流部署到SharePoint站点,但是执行它会导致一个错误。然而,错误信息是完全非描述性的,所以我想知道是否有一种方法可以从Visual Studio中执行它,这样我就可以看到它失败的地方,以及可能的原因。

我正试图根据给定的ListItem.Title信息简单地创建一个新的子网站。

你是怎么调试的?

作为参考,这里是我的代码

class CreateSubsite : System.Workflow.ComponentModel.Activity
{
    protected override System.Workflow.ComponentModel.ActivityExecutionStatus
        Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
    {
        createSite();
        return System.Workflow.ComponentModel.ActivityExecutionStatus.Closed;
    }
    public void createSite()
    {
        using (SPSite currentSite = SPContext.Current.Site)
        {
            using (SPWeb currentWeb = SPContext.Current.Web)
            {
                SPList currentList = SPContext.Current.List;
                SPListItem currentListItem = SPContext.Current.ListItem;
                WorkflowContext workflow = new WorkflowContext();
                SPSite parentSite = new SPSite(workflow.CurrentWebUrl);
                SPWeb newSite = currentSite.AllWebs.Add(
                    currentListItem.Title.Replace(" ", "_"),
                    currentListItem.Title,
                    String.Empty, currentWeb.Language, "CI Template", false, false
                );
            }
        }
    }
}

试着从你的代码中删除Using关键字。当你使用SPContext时不应该处理SPSite和SPWeb,因为处理该对象实际上可能会破坏工作流,因为它可能仍然需要对该对象的引用以用于以后的使用。使用

重写你的代码
  public void createSite() {
        SPSite currentSite = SPContext.Current.Site 
        SPWeb currentWeb = SPContext.Current.Web
         //.... Rest of your code

希望有帮助问候。

最新更新