|
|
#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 |
|
|
|
|
#2 |
|
Участник
|
Цель задачи: убить dll в папке client\bin и использовать сборку только на AOS (их кстати 5 штук у нас в продакшне), дабы не копировать библиотеку на каждую клиентскую машину.
__________________
// no comments |
|
|
|
|
#3 |
|
Участник
|
Что за ошибка? И в чем проблема с копированием библиотеки на клиентские машины (см. класс SysFileDeployer)?
|
|
|
|
|
#4 |
|
Участник
|
Цитата:
Object 'CLRObject' could not be created Проблемы раскидать библиотеку нет, ищу в чем проблема переделать в серверный класс)))
__________________
// no comments |
|
|
|
|
#5 |
|
Участник
|
Может, ваша сборка ссылается на что-то еще, что есть только на клиенте? Если написать простенькое консольное .NET-приложение в стиле приведенного выше "Hello Denis", оно запустится на сервере? Если нет и дело в зависимостях сборки, то можно будет хотя бы увидеть внятное описание исключения.
|
|
|
|
|
#6 |
|
Участник
|
Можно запустить http://www.dependencywalker.com/ на клиенте и поглядеть вдруг есть зависимости о которых говорит gl00mie
|
|
|
|
|
#7 |
|
Banned
|
Самое лучшее регистрировать в GAC если сборка со строгим именем.
Но по идее в bin на AOS обязано работать, только надо рестартовать AOS службу. Возможно именно рестарта и не хватает. |
|
|
|
| За это сообщение автора поблагодарили: dech (1). | |
|
|
#8 |
|
Участник
|
Ошибка оказалась донельзя глупой. Когда тестировал, из папки client в папку server DLL-библиотеку я перемещал, а не копировал. Хоть и с предупреждением, что не оттуда, но reference брался и работал на клиенте, а для серверных классов выдавал ошибку.
Логично было ожидать, что если DLL в папке server, то класс-пользователь на стороне сервера должен компилироваться и работать. Все-таки DLL нужно хранить одновременно в двух папках. Возникает неуверенность, будет ли вообще работать серверный класс в трёхзвенке на клиентской машине без этой библиотеки, если она будет храниться на АОСах?
__________________
// no comments |
|
|
|
|
#9 |
|
Участник
|
|
|
|
|
| За это сообщение автора поблагодарили: gl00mie (1), dech (1). | |
|
|
|