我有一个自定义构建的Web服务,它只是将项目添加到SharePoint Foundation 2010的列表中。我将工作流附加到列表但是当我使用我的Web服务(引用SharePoint对象模型)创建项目时工作流程“启动失败”。如果我直接在SharePoint中向列表中添加项目,则工作流程将根据需要启动而不会出现任何问题。到目前为止,我已经尝试了以下内容(包括将它们一起使用的所有变体),但是没有解决这个问题:
我用来创建列表项的代码如下:
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();
提前致谢...
答案 0 :(得分:2)
在研究了ULS日志错误之后,我发现问题出在我的Web服务上的web.config文件中,需要授权类型声明工作流能够在我创建的项目上运行。
我使用这篇文章来帮助我解决它:http://social.msdn.microsoft.com/forums/en-US/sharepointworkflow/thread/71d23c0e-24c5-4d61-8d62-265c374ac81c/