إدارة علاقات العملاء 3.0 شرح لا يعمل:الحدث:ما بعد الإنشاء ، استثناء:النظام.إنفاليدكاستكسيبتيون:المدلى بها المحدد غير صالح

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

سؤال

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

using System;
using System.IO;
using Microsoft.Crm.Callout;

namespace IncrementCompetitorNumber
{
    public class Increment
    {
        public string IncrementNumber()
        {
            string ProjectAutoNumber = "D:\\CRM_Misc\\incrementers\\new_competitornumber.txt";
            string AutoNumber = "0"; 
            string ReturnThis = "0";
            int i = 0;

            lock(this)

            {

            TextReader tr = new StreamReader(ProjectAutoNumber);

            AutoNumber = tr.ReadLine();

            tr.Close();

            ReturnThis = AutoNumber;

            i = Convert.ToInt32(AutoNumber);

            i++;

            AutoNumber = i.ToString();

            TextWriter tw = new StreamWriter(ProjectAutoNumber);

            tw.WriteLine(AutoNumber);

            tw.Close();

            }

            return ReturnThis;
        }
    }
}

لذا...أحد يعرف ما أفعله خطأ?

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

المحلول

لا يوجد شيء في الكود الذي قمت بنشره من شأنه أن يتسبب في استثناء غير صالح, ما السطر الذي يحدث فيه الاستثناء?

شيء واحد أن أذكر هو أن التعليمات البرمجية التي قمت بنشرها ليست كرم 3.0 شرح.

يجب أن ترث فئة شرح إدارة علاقات العملاء 3.0 من CrmCalloutBase ثم يكون لديك واحدة من أساليب الحدث المختلفة مثل PostUpdate.هل فعلت هذا مكان آخر ، وندعو هذه الفئة من هناك?

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

تغييره على النحو التالي:

using System;
using System.IO;
using Microsoft.Crm.Callout;

namespace IncrementCompetitorNumber 
{
    public class Increment : CrmCalloutBase
    {
        public override void PostCreate(CalloutUserContext userContext, CalloutEntityContext entityContext, string postImageEntityXml)
        {
            IncrementNumber();
        }

        private string IncrementNumber()
        {
            string ProjectAutoNumber = "D:\\CRM_Misc\\incrementers\\new_competitornumber.txt";
            string AutoNumber = "0"; 
            string ReturnThis = "0";
            int i = 0;

            lock(this)

            {

            TextReader tr = new StreamReader(ProjectAutoNumber);

            AutoNumber = tr.ReadLine();

            tr.Close();

            ReturnThis = AutoNumber;

            i = Convert.ToInt32(AutoNumber);

            i++;

            AutoNumber = i.ToString();

            TextWriter tw = new StreamWriter(ProjectAutoNumber);

            tw.WriteLine(AutoNumber);

            tw.Close();

            }

            return ReturnThis;
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top