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

Нужна помощь!
Есть старый 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
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не работают легаси библиотеки из проекта asp.net mvc, из проекта WindowsForms работают
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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