Ejemplo n.º 1
0
        private void dispatcherTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                count++;
                countrasaction++;



                if (countrasaction == Convert.ToInt32(10))
                {
                    if (msdtcManager.IsServiceInstalledAndRunning() != true)
                    {
                        msdtcManager.StartService();
                    }
                }
                else
                {
                    if (countrasaction == Convert.ToInt32(15))
                    {
                        msdtcManager.NetworkDtcAccess   = NetworkDTCAccessStatus.On;
                        msdtcManager.AllowInbound       = true;
                        msdtcManager.AllowOutbound      = true;
                        msdtcManager.AllowClientDistant = true;
                        msdtcManager.AllowAdminDistant  = true;


                        msdtcManager.AuthenticationRequired  = AuthenticationRequiredType.NoAuthenticationRequired;
                        msdtcManager.EnableXaTransactions    = true;
                        msdtcManager.EnableSnaLuTransactions = true;

                        if (msdtcManager.NeedRestart)
                        {
                            msdtcManager.RestartService();
                        }
                        dispatcherTimer.Stop();
                    }
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
        }
Ejemplo n.º 2
0
        static void CheckMSDTC()
        {
            try
            {
                /*
                 * Проверка MSDTC
                 * */

                var msdtcManager = new MsdtcManager(false, 1000);

                Debug.WriteLine("MSDTC: параметры службы (dcomcnfg). Установлена = {0}. Установлена и запущена = {1}.", msdtcManager.IsServiceInstalled(), msdtcManager.IsServiceInstalledAndRunning());
                Debug.WriteLine("MSDTC: Network DTC. Доступ к сети DTC = {0}. Диспетчер транзакций - разрешить входящие = {1}, разрешить исходящие = {2}", msdtcManager.NetworkDtcAccess, msdtcManager.AllowInbound, msdtcManager.AllowOutbound);
                if (msdtcManager.NetworkDtcAccess == NetworkDTCAccessStatus.Unknown)
                {
                    Debug.WriteLine("MSDTC: Настройки безопасности Network DTC недоступны. Возможно, нет доступа на чтение реестра. Проверьте настройки вручную (Требуется следующее: доступ к сети DTC = Включен; диспетчер транзакций - разрешить входящие = Включен; диспетчер транзакций - разрешить исходящие = Включен)");
                }
                else
                {
                    if (msdtcManager.NetworkDtcAccess != NetworkDTCAccessStatus.On || !msdtcManager.AllowInbound || !msdtcManager.AllowOutbound)
                    {
                        var toCorrect = new List <string>();
                        if (msdtcManager.NetworkDtcAccess != NetworkDTCAccessStatus.On)
                        {
                            toCorrect.Add("Доступ к сети DTC - включить");
                        }
                        if (!msdtcManager.AllowInbound)
                        {
                            toCorrect.Add("Разрешить входящие - включить");
                        }
                        if (!msdtcManager.AllowOutbound)
                        {
                            toCorrect.Add("Разрешить исходящие - включить");
                        }

                        Debug.WriteLine("MSDTC: выполнение корректирующих действий:\r\n - " + string.Join(";\r\n - ", toCorrect) + ".");

                        if (msdtcManager.NetworkDtcAccess != NetworkDTCAccessStatus.On)
                        {
                            msdtcManager.NetworkDtcAccess = NetworkDTCAccessStatus.On;
                        }
                        if (!msdtcManager.AllowInbound)
                        {
                            msdtcManager.AllowInbound = true;
                        }
                        if (!msdtcManager.AllowOutbound)
                        {
                            msdtcManager.AllowOutbound = true;
                        }

                        if (msdtcManager.NeedRestart)
                        {
                            Debug.WriteLine("MSDTC: служба требует перезагрузки, выполняем попытку...");
                            msdtcManager.RestartService();
                            Debug.WriteLine("MSDTC: служба перезагружена.");
                        }
                    }
                }
            }
            catch (Exception ex) { Debug.WriteLine("Web.MSDTC: {0}", ex.Message); }
        }