Сбой при запуске рабочих процессов при программном добавлении элемента в список - PullRequest
1 голос
/ 20 февраля 2012

У меня есть пользовательский веб-сервис, созданный для простого добавления элементов в список в 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();

Заранее спасибо ...

1 Ответ

2 голосов
/ 20 февраля 2012

После исследования ошибок журнала ULS я обнаружил, что проблема связана с моим файлом web.config в моей веб-службе, который требует, чтобы разрешенные типы объявляли рабочие процессы для возможности выполнения на элементе, который я создал.

Я использовал этот пост, чтобы помочь мне решить его: http://social.msdn.microsoft.com/forums/en-US/sharepointworkflow/thread/71d23c0e-24c5-4d61-8d62-265c374ac81c/

...