Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как дебажить сервис и можно ли вообще???


Автор: madFrame 14.5.2014, 10:51
Народ, подскажите как же дебажить сервис???

Автор: Экскалупатор 14.5.2014, 11:52
какой именно сервис?

ну и вообще, варианты:
1. тесты
2. клиент к сервису(если это сервис с внешним апи)
3. если это вин-сервис, то нет никаких проблем, обычно это просто консольное приложение.

нужно больше информации. какова цель, что именно дебажить, почему неполучается, что именно не получается?

Автор: madFrame 14.5.2014, 12:58
вин-сервис.
весь функционал был реализован с GUI, потом перенесён в вин-сервис.
как дебажить я разобрался.

Нашёл ошибку, не стартует метод.( вкратце, он тянет поля с дбфника)

1.в вин-форм я читал dbf с помощью класса,  без проблем.
 
Код

class FileDBF
    {
        private OdbcConnection _connection = null;

        public DataTable Execute(string command)
        {
            DataTable dt = null;
            if (_connection != null)
            {
                try
                {
                    _connection.Open();
                    dt = new DataTable();
                    System.Data.Odbc.OdbcCommand oCmd = _connection.CreateCommand();
                    oCmd.CommandText = command;
                    dt.Load(oCmd.ExecuteReader());
                    _connection.Close();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            return dt;
        }
        public DataTable GetAll(string dbpath)
        {
            return Execute("SELECT * FROM " + dbpath);
        }
        public FileDBF()
        {
            this._connection = new System.Data.Odbc.OdbcConnection();
            _connection.ConnectionString = @"Driver={Microsoft dBase Driver (*.dbf)};" +
                "SourceType=DBF;Exclusive=No;" +
                "Collate=Machine;NULL=NO;DELETED=NO;" +
                "BACKGROUNDFETCH=NO;";
        }
    }


2. а вот на дебаге, вин-сервис плюёт "ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"
Мот быть, что данный класс работает только с GUI?

С сервисом первый раз столкнулся, не пойму ещё что к чему.....

Автор: Экскалупатор 14.5.2014, 13:02
http://answers.microsoft.com/en-us/office/forum/office_2010-access/microsoftodbc-driver-manager-data-source-name-not/05912292-e7a6-4f65-96ae-91305706518b?tab=MoreHelp


Цитата(madFrame @  14.5.2014,  11:58 Найти цитируемый пост)
Мот быть, что данный класс работает только с GUI?

нет никакой разницы, если не используется какая то специфическая функциональность(координаты экрана, к примеру). все остальное вопрос правильной организации и конфигурации.

Автор: madFrame 14.5.2014, 13:24
никакой специфики нет....

проблемы со строкой подключения к драйверу я думаю тоже можно исключить, ведь из вин-формы всё стабильно работает.
даже не знаю, что именно копать....

Автор: Экскалупатор 14.5.2014, 14:03
Цитата(madFrame @  14.5.2014,  12:24 Найти цитируемый пост)
проблемы со строкой подключения к драйверу я думаю тоже можно исключить, ведь из вин-формы всё стабильно работает.
даже не знаю, что именно копать.... 

обычно в строке подключения есть путь к файлу базы данных(есди это файловая БД). в вин-формах, возможно, использовался какой то встроенный адаптер, настроенный в редакторе, что в процессе переноса было благополучно выброшено, вот и не работает.

в студии есть вкладка "ServerExplorer" в которой можно настроить подключение к базе и оттуда взять строку подключения.

Автор: madFrame 14.5.2014, 15:05
Цитата

в студии есть вкладка "ServerExplorer" в которой можно настроить подключение к базе и оттуда взять строку подключения. 


в сожалению не влияет на результат...

Автор: Экскалупатор 14.5.2014, 15:17
результат строки подключения можно? в ней должен быть путь к файлу базы данных, если пути нету то работать не будет.

http://msdn.microsoft.com/ru-ru/library/system.data.odbc.odbcconnection.connectionstring%28v=vs.110%29.aspx

Автор: madFrame 14.5.2014, 15:24
@"Driver={Driver do Microsoft dBase (*.dbf)};collatingsequence=ASCII;defaultdir=A:\Banks\BIK;deleted=0;driverid=533;fil=dBase 5.0;filedsn=A:\Banks\BIK\BNKSEEK.DBF.dsn;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;statistics=0;threads=3;uid=admin;usercommitsync=Yes"



Автор: madFrame 14.5.2014, 16:17
При дебаге, нашёл проблему..., в общем dBase драйвер тупо пользовательский.

1.есть возможность сделать dBase системным?
2.делать сервис не локальным,а из под пользователя, крайне не удобно.

Автор: jonie 15.5.2014, 20:48
кстати дааавно писал такую штуку https://bitbucket.org/jonie/winsrvdebughelper
помогает в отладке сервисов (хотя сейчас мода пошла на TopShelf..)..
мб полезно будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)