Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не работают легаси библиотеки из проекта asp.net mvc, из проекта WindowsForms работают / 1 сообщений из 1, страница 1 из 1
31.03.2021, 09:05
    #40058403
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работают легаси библиотеки из проекта asp.net mvc, из проекта WindowsForms работают
Здравствуйте!

Нужна помощь!
Есть старый web-сервис еще 2000-х годов на С# по технологии SOAP. Исходников проекта нет - декомпилю по кусочкам.
В нем есть 3 библиотеки, которые отвечают за подключение к БД, выгрузки нужных объектов (записей) их модификацию, создание новых записей и генерации id-ключей для данных записей (да ключи генерируется самим сервисом, а не БД):
InMeta.ServerRuntime.dll
InMetaUtils.dll
Integro.dll
Эти библиотеки работают только на самом сервере, где размещён сам web-сервис. Поэтому что-бы можно было работать с клиента нужно клиент-серверное приложение.
Для начала написал просто WindowsForms утилиту, подключил к ней данные 3 библиотеки и написал код использующий их. Протестировал на localhost и он отработал нормально:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
        public string createNewRecording(string nameServer)
        {
            // Получить список идентификаторов приложений с указанного центрального ИнМета-сервера.
            string[] idAppCentralServer = DataApplication.GetAppIds(nameServer);

            //DataApplication app = new DataApplication(idAppCentralServer[0], nameServer);
            DataApplication app;
            if (idAppCentralServer.Contains("EstateOrenburg"))
            {
                //app = new DataApplication("estateorenburg", nameServer);
                app = new DataApplication("estateorenburg", nameServer);
            }
            else { app = null; return "Create application failure"; }

            // Создание сессии (подключение к БД)
            DataSession session = app.CreateSession("AD\\lucenkovlse");
            //session.Db.BeginTransaction("","");

            // Прописываем свойства, которые нам необходимо прогрузить при первом запросе
            string loadPlan = "<Executor/>";

            DateTime dateTime = new DateTime(2021, 03, 31);

            // Получение списка объектов
            DataObjectList rentApartContrProc;
            if (session != null)
            {
                DataStorage dataStorage = session["Constr/RentPrivatizationApartmentContractProcess"];
                rentApartContrProc = dataStorage.Query(loadPlan, "OID=?", "0009B470855A"); // 000859F5EC33
            }
            else
            {
                return "Create session failure";
            }

            // Создание нового объекта
            //session["Constr/AccrualsPaymentsSocialContract"].AddNew();

            foreach (Integro.InMeta.Runtime.DataObject racp in rentApartContrProc)
            {
                //// Чтение свойств объекта
                //racp.GetString("ContractNo", "No date");
                //racp.GetDateTime("ContractDate");

                ////Запись свойств объекта
                //racp.SetString("ContractNo", "xxx");
                //racp.SetDateTime("ContractDate", DateTime.Today);

                // Добавлению нового дочернего объекта
                Integro.InMeta.Runtime.DataObject accrualsPaymentsSocialContract = racp.GetChilds("Constr/AccrualsPaymentsSocialContract").AddNew();
                Integro.InMeta.Runtime.DataObjectChildList employers = racp.GetChilds("Constr/Employers");
                Integro.InMeta.Runtime.DataObject searchEmployer = null;

                foreach (Integro.InMeta.Runtime.DataObject employer in employers)
                {
                    if (employer.GetString("StatusSubject").Equals("Наниматель"))
                    {
                        searchEmployer = employer;
                        break;
                    }
                }

                if (searchEmployer != null)
                {
                    accrualsPaymentsSocialContract.SetLink("Subject", searchEmployer);
                }
                accrualsPaymentsSocialContract.SetString("PersonalAccount", "0000000002");
                accrualsPaymentsSocialContract.SetString("IdAccrual", "123456");
                accrualsPaymentsSocialContract.SetDateTime("DateAccrual", dateTime);
                accrualsPaymentsSocialContract.SetDouble("Accrual", 2000);
            }
            //Сохранение объектов в БД
            session.Commit();
            return "Upload successful";
        }


Написал web-service ASP.NET mvc с таким же кодом, но при тестировании код падает на самом последнем шаге - сохранения данных в БД:
Код: c#
1.
2.
//Сохранение объектов в БД
            session.Commit();


с ошибкой авторСсылка на объект не указывает на экземпляр объекта. Тот же самый код, тот же самый объект (id).

Не пойму причины, код ведь тот же самый, исполняется то на сервере (локально) как требуют библиотеки. Запрос к БД проходит, а сохранение нет.
Запускается web-сервис на IIS Express.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не работают легаси библиотеки из проекта asp.net mvc, из проекта WindowsForms работают / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]