لماذا توقف سير عمل SharePoint دائما عند استخدام هذا الرمز؟

StackOverflow https://stackoverflow.com/questions/1104111

سؤال

أحتاج إلى العثور على مستخدم في قائمة لتعيين خاصية المهمة المعينة، هذه المعلومات موجودة في قائمة. لذلك أنا استخدم هذه الطريقة:

public static SPUser GetSPUser(SPListItem item, string key){ 
    SPFieldUser field = item.Fields[key] as SPFieldUser;

    if (field != null)
    {
        SPFieldUserValue fieldValue = field.GetFieldValue(item[key].ToString()) as SPFieldUserValue;
        if (fieldValue != null)
        {
            return fieldValue.User;
         }
     }
     return null;
 }

المشكلة هي أنه عندما أستخدم هذه الطريقة أو هذا الجزء من التعليمات البرمجية، توقف سير العمل الخاص بي دون قول أي شيء. هنا مثيل من التعليمات البرمجية عندما استخدمها:

using (SPSite site = new SPSite(adress_of_my_site))
{                
    using (SPWeb web = site.OpenWeb())
   {
        SPList list = web.Lists["Acteurs du projet"];
        SPView view = cobj_ListeDesActeursDuProjet.DefaultView;
        SPListItemCollection itemcollection = list.GetItems(view);
        foreach (SPListItem item in itemcollection)
        {                       
            SPUser lobj_acteur = Utilities.GetSPUser(item,"acteur");
            // Dictionary<string,class>
            ActeursDuProjet[item["Rôle"].ToString()] = 
                new ActeursDuProjet()
                { 
                 Login = lobj_acteur.LoginName, 
                 Email = lobj_acteur.Email 
                };
        }

    }


}

إذا قمت بتعليق محتوى My Foreach Maleaflow، استمر كذلك ...

إذا كان لدى أي شخص فكرة أنه سيكون رائعا.

التحيات، لوث

تحرير: مشكلة في التعليمات البرمجية

هل كانت مفيدة؟

المحلول

فيما يلي بعض نصائح التصحيح التي قد تساعد:

سجلات uls

يجب الإبلاغ عن أي استثناءات هنا في بعض التفاصيل.

تمكين تصحيح الأخطاء لجميع كود .NET

سيؤدي ذلك إلى كسر مصحح الأخطاء كلما حدث استثناء في SharePoint بالإضافة إلى التعليمات البرمجية الخاصة بك. الجانب السلبي هو أن المصحح سوف ينكسر استثناءات "طبيعية" التي تسبب أي آثار جانبية. لذلك لا تقلل!

لتمكين: انتقل إلى تصحيح، استثناءات واستبعاد استثناءات وقت تشغيل اللغة المشتركة. اذهب أيضا إلى الأدوات والخيارات والتصحيح والتنفيذ تمكين التعليمات البرمجية الخاصة بي فقط. ثم تعلق على w3wp.exe.

تعليق رمز

يمكنك أيضا التعليق على جميع الكود الخاص بك. إذا فشلت خطوة سير العمل، فأنت تعلم أن هناك مشكلة في مكان آخر. إذا تم تمرير خطوة سير العمل، ثم ابدأ تشغيل التعليمات البرمجية حتى يفشل - ثم تعرف أين تبدو.

نصائح أخرى

حاولت التعليق على هذا أعلاه لكنها لم تهتم بشكل جيد حتى هنا.

ربما على ما يرام، ولكن هذا يبدو مريب لي:

// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] = 
    new ActeursDuProjet()
    { 
     Login = lobj_acteur.LoginName, 
     Email = lobj_acteur.Email 
    };

أعتقد أنه سيكون شيئا مثل:

// dictionary declared somewhere earlier
Dictionary<string,ActeursDuProjet> roles = new Dictionary<string,ActeursDuProjet>();

// inside the foreach
string role = item["Rôle"].ToString();
if (!roles.ContainsKey(role))
{
    ActeursDuProjet foo = new ActeursDuProjet();
    foo.Login = lobj_acteur.LoginName;
    foo.Email = lobj_acteur.Email;
    roles.Add(role, foo);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top