以编程方式将项目添加到列表时,工作流程启动失败

时间:2012-02-20 08:47:21

标签: web-services sharepoint sharepoint-2010 workflow sharepoint-workflow

我有一个自定义构建的Web服务,它只是将项目添加到SharePoint Foundation 2010的列表中。我将工作流附加到列表但是当我使用我的Web服务(引用SharePoint对象模型)创建项目时工作流程“启动失败”。如果我直接在SharePoint中向列表中添加项目,则工作流程将根据需要启动而不会出现任何问题。到目前为止,我已经尝试了以下内容(包括将它们一起使用的所有变体),但是没有解决这个问题:

  • 使用SPSecurity.RunWithElevatedPrivilages运行我的代码
  • 向管理员和系统帐户模拟其他用户以将项目创建为
  • 以与我网站的应用程序池相同的用户身份运行我的应用程序池
  • 将我的应用程序池作为另一个帐户运行到我的站点的应用程序池用户 Web服务没有失败,它正在创建项目,只是工作流程没有运行...有人可以帮我这个吗?

我用来创建列表项的代码如下:

 SPSecurity.RunWithElevatedPrivileges(delegate()
        {

            SPSite oTempSite = new SPSite(SharePointSite);
            SPUser oUserImpersonate = oTempSite.OpenWeb().EnsureUser(UserToEntryAs);

            SPSite oSite = new SPSite(SharePointSite, oUserImpersonate.UserToken);
            SPWeb oWeb = oSite.OpenWeb();

            try
            {
                oSite.AllowUnsafeUpdates = true;
                oWeb.AllowUnsafeUpdates = true;

                SPList oList = oWeb.Lists["Sample Log"];

                SPListItem oNewItem = oList.Items.Add();

                oNewItem["Customer"] = intCustomerID;
                oNewItem["Cust. Contact Name"] = strCustomerContactName;
                oNewItem["Contact Email"] = strCustomerContactEmail;
                oNewItem["Sample Number"] = strSampleNumber;
                oNewItem["Notes"] = strNotes;
                oNewItem["Application"] = strSampleApplication;
                oNewItem["Despatch Method"] = strDespatchMethod;
                oNewItem["Cost"] = dblCost;
                oNewItem["Sample 1"] = intSampleProductID;
                oNewItem["Weight 1"] = strSampleWeight;
                oNewItem["Batch No. 1"] = strSampleBatch;

                //Handle Account Manager(s):
                SPFieldUserValueCollection usrAccountManagers = new SPFieldUserValueCollection();
                foreach (string strAcctMrg in AccountManagers.Split(';'))
                {
                    SPUser oUser = oWeb.EnsureUser(strAcctMrg);
                    usrAccountManagers.Add(new SPFieldUserValue(oWeb, oUser.ID, oUser.LoginName));
                }
                oNewItem["Account Manager"] = usrAccountManagers;

                oNewItem["Content Type"] = "Ingredient Sample"; //Set the content type to be 'Ingredient Sample'
                oNewItem["Ingredient Sample Status"] = "Awaiting Result"; //Set the status to default to 'Awaiting Result'

                oNewItem.Update();

提前致谢...

1 个答案:

答案 0 :(得分:2)

在研究了ULS日志错误之后,我发现问题出在我的Web服务上的web.config文件中,需要授权类型声明工作流能够在我创建的项目上运行。

我使用这篇文章来帮助我解决它:http://social.msdn.microsoft.com/forums/en-US/sharepointworkflow/thread/71d23c0e-24c5-4d61-8d62-265c374ac81c/