У меня есть пользовательский веб-сервис, созданный для простого добавления элементов в список в SharePoint Foundation 2010. У меня есть рабочий процесс, присоединенный к списку, но когда я создаю элемент с помощью своего веб-сервиса (который ссылается на объектную модель SharePoint)рабочие процессы «Сбой при запуске».Если я добавлю элемент в список непосредственно в SharePoint, рабочие процессы начнутся без каких-либо проблем.До сих пор я пробовал следующее (включая все варианты их совместного использования), но ни одно из них не решает проблему:
- Использование SPSecurity.RunWithElevatedPrivilages для запуска моего кода
- Олицетворение другогопользователь с учетной записью администратора и системы, чтобы создать элемент как
- Запуск пула приложений под тем же пользователем, что и пул приложений моего сайта
- Запуск пула приложений как учетной записи, отличной от пула приложений моего сайтапользователь Веб-служба не работает и создает элементы, просто рабочие процессы не выполняются ... может кто-нибудь помочь мне с этим, пожалуйста?
Код, который я использую для создания элемента спискавыглядит следующим образом:
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();
Заранее спасибо ...