|
17.11.2016, 15:56 | #1 |
Участник
|
.NET-сборка и выполнение на стороне сервера
Всем доброго дня.
Версия AX4. Возникла проблема следующего плана. Не удается получить работающий код при переносе его с клиента на сервер. Манипуляции провожу следующие:
X++: using System; using System.Collections.Generic; using System.Text; namespace PPO.QC { public class Service { protected int a; protected int b; public Service(int _a, int _b) { a = _a; b = _b; } public String hello(String name) { return "Hello, " + name; } public int summary() { return a + b; } } } X++: public void test() { PPO.QC.Service svc; str hello; int summary; ; new InteropPermission(InteropKind::CLRInterop).assert(); svc = new PPO.QC.Service(5, 7); hello = svc.hello("Denis"); summary = svc.summary(); CodeAccessPermission::revertAssert(); info(hello); info(strfmt("The summary is %1", summary)); }
__________________
// no comments |
|
17.11.2016, 15:59 | #2 |
Участник
|
Цель задачи: убить dll в папке client\bin и использовать сборку только на AOS (их кстати 5 штук у нас в продакшне), дабы не копировать библиотеку на каждую клиентскую машину.
__________________
// no comments |
|
17.11.2016, 16:20 | #3 |
Участник
|
Что за ошибка? И в чем проблема с копированием библиотеки на клиентские машины (см. класс SysFileDeployer)?
|
|
17.11.2016, 18:09 | #4 |
Участник
|
Цитата:
Object 'CLRObject' could not be created Проблемы раскидать библиотеку нет, ищу в чем проблема переделать в серверный класс)))
__________________
// no comments |
|
17.11.2016, 19:06 | #5 |
Участник
|
Может, ваша сборка ссылается на что-то еще, что есть только на клиенте? Если написать простенькое консольное .NET-приложение в стиле приведенного выше "Hello Denis", оно запустится на сервере? Если нет и дело в зависимостях сборки, то можно будет хотя бы увидеть внятное описание исключения.
|
|
17.11.2016, 22:27 | #6 |
Участник
|
Можно запустить http://www.dependencywalker.com/ на клиенте и поглядеть вдруг есть зависимости о которых говорит gl00mie
|
|
17.11.2016, 22:48 | #7 |
Banned
|
Самое лучшее регистрировать в GAC если сборка со строгим именем.
Но по идее в bin на AOS обязано работать, только надо рестартовать AOS службу. Возможно именно рестарта и не хватает. |
|
|
За это сообщение автора поблагодарили: dech (1). |
18.11.2016, 09:24 | #8 |
Участник
|
Ошибка оказалась донельзя глупой. Когда тестировал, из папки client в папку server DLL-библиотеку я перемещал, а не копировал. Хоть и с предупреждением, что не оттуда, но reference брался и работал на клиенте, а для серверных классов выдавал ошибку.
Логично было ожидать, что если DLL в папке server, то класс-пользователь на стороне сервера должен компилироваться и работать. Все-таки DLL нужно хранить одновременно в двух папках. Возникает неуверенность, будет ли вообще работать серверный класс в трёхзвенке на клиентской машине без этой библиотеки, если она будет храниться на АОСах?
__________________
// no comments |
|
18.11.2016, 11:25 | #9 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: gl00mie (1), dech (1). |
|
|