سؤال

باستخدام ASP.NET 3.5، LinQ إلى SQL، SQL Server 2005 على Windows Server 2003. تشغيل VS 2008 على XP SP3 محليا.

نحن بحاجة إلى أن نكون قادرين على التفاف إدراج وتحديثات وحذف في معاملة. عندما حاولنا أولا عن طريق ملء كتل الرمز using(var trans = new TransactionScope()) { ...; trans.Complete(); }, ، حصلنا على استثناء مناسب يخبرنا أننا نحتاجنا إلى تمكين الوصول إلى الشبكة لمعاملات عن بعد. لقد فعلنا ذلك وبدأت الأمور في العمل بالطريقة التي توقعناها.

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

تم تعطيل الوصول إلى شبكة المعاملات الموزعة (MSDTC). يرجى تمكين DTC للوصول إلى الشبكة في تكوين الأمان ل MSDTC باستخدام أداة إدارة خدمات المكونات. http://img101.imageshack.us/img101/5480/msdtcnetworkscesserror.jpg.

إليك الرمز الذي يسبب الاستثناء:

        using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required, TimeSpan.MaxValue))
        {
            using (var dc = new ChargeXferDataContext())
            {
                //create 'Line' object and set initial values
                Line line = new Line();
                line.Unit_Num = UnitId;
                line.SubmittedBy = Viewer.Alias();
                line.LineSubmittedOn = DateTime.Now;

                //get codes to move from checked rows
                //iterate rows in current gridview
                foreach (GridViewRow row in gv.Rows)
                {
                    //if checked, insert move order
                    HtmlInputCheckBox cb = (HtmlInputCheckBox)row.FindControl("RowLevelCheckBox");
                    if (cb.Checked)
                    {

                        //1st: get required values
                        int id = Convert.ToInt32(((TextBox)row.FindControl("fldCodeId")).Text);
                        int newId = Convert.ToInt32(((DropDownList)row.FindControl("ddlNewId")).SelectedValue);
                        char newPOA = Convert.ToChar(((DropDownList)row.FindControl("ddlPOA")).SelectedValue);

                        //2nd: get current diag code from old patient
                        //######## Exception happens here...
                        DiagCode code = dc.DiagCodes.SingleOrDefault(c => c.Id == id);
                        //########

                        //3rd: add code to emenline object
                        addCode(line, code, newId, newPOA);

                    }
                }
                dc.SubmitChanges();
                trans.Complete();
            }
        }                       

إذا كنت قد حصلت على أي اقتراحات، فسيتم تقديرها. اسمحوا لي أن أعرف إذا كان بإمكاني شرح شيء أكثر. شكرا مقدما!!

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

المحلول

لم أجد حل لهذا. انتقلت مع الحياة.

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